範囲内の 2 番目のフィールドを持つすべての行を表示し[0,999]、最終的にこれらの列の数を表示する場合は、これでうまくいきます。sort -nandする必要はなく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