awk:如果打印文件的总行数大于
如果总行数大于某个数字,我想打印一个文件。例如:awk:如果打印文件的总行数大于,awk,Awk,如果总行数大于某个数字,我想打印一个文件。例如: cat FILE A B C awk '{c+=1} END {print c}' FILE 3 我想过滤c上的文件。如果c是,不需要awk: [ $(wc -l < file) -ge 2 ] && cat file ^^^^^^^^^^ ^^^^^ ^^^^^^^^ number of lines | print file if condition matc
cat FILE
A
B
C
awk '{c+=1} END {print c}' FILE
3
我想过滤
c
上的文件。如果c
是
,不需要awk
:
[ $(wc -l < file) -ge 2 ] && cat file
^^^^^^^^^^ ^^^^^ ^^^^^^^^
number of lines | print file if condition matched
compare value
请注意,END
块必须将其命令存储在方括号内,print
与print$0
相同,awk
中的NR
包含记录数,以行数为例
总之,要使命令正常工作并在行数大于2时打印最后一行,可以使用:
awk 'END{if (NR>2) {print}}' FILE
试验
请注意,awk
附带了NR
变量,表示行号。cut
管道在这里不是有点无用吗?(这里通常的UUOC意味着对Cut的无用使用)如果使用wc-l
,则不需要Cut
。对于小文件,这看起来会更好,对于大文件,我不知道你是否松了很多。更新了我的答案和带有箭头的“图片:)@Pgibas请用正确的输入更新您的问题,以便我们可以猜测。另请参见我的awk
提案。@Pgibas这是您所问问题的答案。请参阅:
awk '{c+=1} END if c (c>2) print $0' FILE
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