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