awk:打印满足字段条件的第一行

时间:2013-11-19 02:06:13

标签: printing awk line conditional

我知道这是一个非常简单的问题,但我想在满足给定字段条件的许多文件中打印第一行:

$ awk ' ( $3>=0.2 ) { print $3, $5 } ' Data.out

我试图在几个地方插入END以退出打印,但我无法让它工作......以上打印所有行$ 3> = 0.2 ...

4 个答案:

答案 0 :(得分:3)

首先想到的是添加exit

awk '$3 >= 0.2 { print $3, $5; exit }' file

但除非你想要做的只是你需要一个旗帜:

awk '$3 >= 0.2 && !f { print $3, $5; f=1 }' file

答案 1 :(得分:1)

您要查找的命令是nextfile

gawk '$3 >= 0.2 { print $3, $5; nextfile }' *.out

如果您没有使用gawk,here是在其他awks中模拟此行为的一些建议。然而,根据gnu页面上的说明,它已成为2012 POSIX标准。

答案 2 :(得分:0)

awk ' ( $3>=0.2 ) { print $3, $5; exit } ' Data.out

答案 3 :(得分:0)

exit的问题(除了明显的兼容性问题)是,如果你有多个文件,它根本不会处理下一个文件。这是一个多个文件的脚本:

awk 'FNR==1{f=1}
    $3>=0.2{if(f)print $3,$5;f=0}' file1 file2 ...

您可以通过以下方式进行优化:在第一次匹配后关闭输入文件,但这至少应该让你开始。