範囲内の 2 番目のフィールドを持つすべての行を表示し[0,999]
、最終的にこれらの列の数を表示する場合は、これでうまくいきます。sort -n
andする必要はなくwc -l
、awk
それ自体で実行できます。
$ awk -F, '($2 >= 0 && $2 <= 999) {printf "%10s %40s\n" , "Total", $2; i++} END{print "total: "i}' file
Total 1
Total 2
Total 4
Total 3
total: 4
そして、合計が必要な場合:
$ awk -F, '($2 >= 0 && $2 <= 999) i++} END{print "total: "i}' file
total: 4
コマンドが機能しなかったのはなぜですか?
とprint
:
$ awk -F, '{if($2 >= 0 && $2 <= 999) print "%10s" "%40s" , "Total", $2}' a | sort -n
%10s%40s Total 1
%10s%40s Total 2
%10s%40s Total 3
%10s%40s Total 4
フォーマットはそうではありませんでしたが、行数は問題ありませんでした。使用するには、代わり%10s
に使用する必要があります。printf
とprintf
:
$ awk -F, '{if($2 >= 0 && $2 <= 999) printf "%10s" "%40s" , "Total", $2}' a
Total 1 Total 2 Total 4 Total 3
printf
新しい行を印刷せずに使用すると、すべての出力が同じ行にありました。\n
それぞれの最後に追加する必要がありましたprintf
:
$ awk -F, '{if($2 >= 0 && $2 <= 999) printf "%10s %40s\n", "Total", $2}' file
Total 1
Total 2
Total 4
Total 3