awk选择大于某个数字的CSV文件列

时间:2017-02-14 22:33:56

标签: awk

我有一个名为"awk_column_select_test.csv"

的CSV文件
a,b,c
0.2,0.4,0.5
0.3,0.6,0.7
0.4,0.8,0.9

我试图写一个awk代码来选择列1或列2或列3大于0.5的行。

我的awk程序名为“awk_select_column_test.awk”,如下所示:

#!/usr/bin/awk -f

BEGIN {FS=","; cutoff="0.5"} 
{$1 > cutoff || $2 > cutoff || $3 > cutoff}
END {print}

然后,我尝试使用以下命令在命令行上运行:

awk -f awk_select_column_test.awk awk_column_select_test.csv

我只有一行得到以下输出:

0.4,0.8,0.9

但是,我希望得到这样的两行:

0.3,0.6,0.7
0.4,0.8,0.9

1 个答案:

答案 0 :(得分:1)

你有额外的花括号{}END块打印最后一行,逻辑是正确的。

#!/usr/bin/awk -f

BEGIN {FS=","; cutoff=0.5} 
NR>1 && ($1 > cutoff || $2 > cutoff || $3 > cutoff){print}

这可以写,也是

#!/usr/bin/awk -f

BEGIN {FS=","; cutoff=0.5} 
NR>1 && ($1 > cutoff || $2 > cutoff || $3 > cutoff)