awk:如果总行数是更大的打印文件

时间:2013-10-23 10:08:09

标签: awk

如果总行数大于某个数字,我想打印一个文件。例如:

 cat FILE
 A
 B
 C

 awk '{c+=1} END {print c}' FILE
 3

我想在c上过滤FILE。如果c><等等。

例如:

awk '{c+=1} END if c (c>2) print $0' FILE

但我收到此命令的错误消息。

1 个答案:

答案 0 :(得分:2)

不需要awk

[ $(wc -l < file) -ge 2 ] && cat file
    ^^^^^^^^^^    ^^^^^      ^^^^^^^^
    number of lines  |        print file if condition matched
               compare value

另外,请注意您的语法无法生成,因为在读取文件后评估了END块(因此 END ),所以如果你print 1}},除最后一行外,你不能打印任何东西。

awk '{c+=1} END if c (c>2) print $0' FILE

请注意,END块必须将其命令存储在括号内,printprint $0相同,NR中的awk包含记录,在你的情况下行数。

总之,为了让你的命令工作并打印最后一行,以防行数大于2,你可以使用:

awk 'END{if (NR>2) {print}}' FILE

测试

$ [ $(wc -l a | cut -d' ' -f1) -ge 2 ] && cat a
A
B
C

$ [ $(wc -l a | cut -d' ' -f1) -ge 5 ] && cat a