【发布时间】:2016-07-08 20:23:40
【问题描述】:
我正在尝试使用 awk/sed 根据行值提取特定的列数据。我的实际文件有 15 列和超过 1,000 行(来自 .csv 文件。)
简单示例:输入;一个 cdv 文件,共有 5 列和 100 行。输出;第 2 列到第 5 列的数据基于第 2 列中的特定行值。(我有一个希望操作员过滤掉的行值的特定列表。这些值是数字。)
文件如下所示:
"Date","IdNo","Color","Height","Education"
"06/02/16","7438","Red","54","4"
"06/02/16","7439","Yellow","57","3"
"06/03/16","7500","Red","55","3"
最近在 AWK 中尝试过:
#!/usr/bin/awk -f
#I need to extract a full line when column 2 has a specific 5 digit value
awk '\
BEGIN { awk -F "," \
{
if ( $2 == "19650" ) { \
{print $1 "," $6} \
}
exit }
chmod u+x PPMDfUN.AWK
运营商回应:
/var/folders/1_/drk_nwld48bb0vfvdm_d9n0h0000gq/T/PPMDfUN- 489939602.998.AWK.command ; exit;
/usr/bin/awk: syntax error at source line 3 source file /private/var/folders/1_/drk_nwld48bb0vfvdm_d9n0h0000gq/T/PPMDfUN- 489939602.997.AWK
context is
awk >>> ' <<<
/usr/bin/awk: bailing out at source line 17
logout
输出示例:如果第 2 列等于 7439 和 7500,我想要整行。
“Date","IdNo","Color","Height","Education"
"06/02/16","7439","Yellow","57","3"
"06/03/16","7500","Red","55","3"
【问题讨论】:
-
你想要解决方案是python还是awk?
-
您的问题目前非常不清楚。 edit 它提供了一个minimal reproducible example,包括简洁、可测试的样本输入和预期的输出,以及您迄今为止尝试过的内容。还要确保你的例子是准确的,例如您输入的第三行真的是否包含
'7439',Yellow'(Yellow'之前没有单引号)? -
致哈尼:两者都可以。我在 csh。
-
您的文件是逗号分隔的,'\t' 是制表符。此外,这些字段是单引号,而不是双引号。最后,19650 是一个五位数而不是四位数。
-
语法错误是因为你在赋值
-F “\t"的开头使用了一些奇怪的大花字符 (“) 而不是双引号字符 (") 所以 awk 不知道怎么办。在示例输入中,您还有一些其他奇怪的卷曲字符 (’) 与单引号 (') 交织在一起。鉴于此以及@karakfa 之前指出的内容,@ 987654323@ 您的问题是有意义的,并且使用了一致、正确的字符,因此您可以帮助我们了解您想要的内容,以便我们开始为您提供解决方案而不是仍然在How to Ask这个问题上。
标签: csv awk sed data-extraction