我正在尝试使用awk / sed根据行值提取特定的列数据。我的实际文件有15列和超过1,000行(来自.csv文件。)
简单示例:输入;一个总共有5列和100行的cdv文件。输出;第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&amp; 7500。
“Date","IdNo","Color","Height","Education"
"06/02/16","7439","Yellow","57","3"
"06/03/16","7500","Red","55","3"
答案 0 :(得分:0)
你去......
$ awk -F, -v q='"' '$2==q"7439"q' file
"06/02/16","7439","Yellow","57","3"
除了为双引号定义的便捷变量q
之外,没有太多要解释的内容有助于消除转义。
答案 1 :(得分:0)
awk -F, 'NR<2;$2~/7439|7500/' file
"Date","IdNo","Color","Height","Education"
"06/02/16","7439","Yellow","57","3"
"06/03/16","7500","Red","55","3"