1

総行数が一定数より大きい場合にファイルを印刷したい。例えば:

 cat FILE
 A
 B
 C

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

で FILE をフィルタリングしたいccの場合><など。

例えば:

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

しかし、このコマンドでエラー メッセージが表示されます。

4

1 に答える 1

2

これは必要ありませんawk

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

また、ファイルを読み取った後にENDblock が評価されるため (つまりEND )、構文がうまくいかないことに注意してください。print

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

ブロックはそのENDコマンドを括弧内に格納する必要があることに注意してください.printprint $0NRawk

全体として、コマンドが機能し、行数が 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
于 2013-10-23T10:12:23.973 に答える