如果总行数大于某个数字,我想打印一个文件。例如:
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
但我收到此命令的错误消息。
答案 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
块必须将其命令存储在括号内,print
与print $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