如果总行数大于某个数字,我想打印一个文件。例如:
cat FILE
A
B
C
awk '{c+=1} END {print c}' FILE
3
我想过滤c
. 如果c
是>
,<
以此类推。
例如:
awk '{c+=1} END if c (c>2) print $0' FILE
但是我收到此命令的错误消息。
如果总行数大于某个数字,我想打印一个文件。例如:
cat FILE
A
B
C
awk '{c+=1} END {print c}' FILE
3
我想过滤c
. 如果c
是>
,<
以此类推。
例如:
awk '{c+=1} END if c (c>2) print $0' FILE
但是我收到此命令的错误消息。
不需要awk
这个:
[ $(wc -l < file) -ge 2 ] && cat file
^^^^^^^^^^ ^^^^^ ^^^^^^^^
number of lines | print file if condition matched
compare value
另外,请注意,您的语法无法实现,因为在读取文件(因此END )之后END
评估了块,因此如果您,除了最后一行之外,您无法打印任何内容。print
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