我知道这是一个非常简单的问题,但我想在满足给定字段条件的许多文件中打印第一行:
$ awk ' ( $3>=0.2 ) { print $3, $5 } ' Data.out
我试图在几个地方插入END以退出打印,但我无法让它工作......以上打印所有行$ 3> = 0.2 ...
答案 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 ...
您可以通过以下方式进行优化:在第一次匹配后关闭输入文件,但这至少应该让你开始。