
私はこれを持っています:
S=`cat sales.txt`;
echo "$S" | cut -d: -f5 | grep -E '[0-9][0-9][0-9]' | wc -l
私のテキストファイル:名前:ID:番号:タイプ:値
Tom:8:987654:A:67 //1
Dick:9:7651:B:83 //2
Harry:5:21215121:A:92 //3
Molly:2:1231872231:A:44 //4
Megan:123:322:B:145 //5
Russia:8:99231272:B:530 //6
Boleh:123:29321831:C:5000 //7
5 列目の値が 0 ~ 999 の範囲にある行の数を数えようとしています。
実行しようとすると、 6 とカウントされるべきところ、 3 とカウントされます。
答え1
2桁の数字が正規表現と一致しません[0-9][0-9][0-9]
。
また、ファイルを変数に保存して印刷することecho
は、本当に悪い考えだ。なぜ printf は echo よりも優れているのでしょうか?ですが、さらに重要なのは、コマンドcat file
の代わりに を実行することですecho
。
実際には、すべてを Awk で実行でき、 も必要ありませんcat
。負の数値が表示されないので、「1000 未満」のチェックだけを行います。
awk -F: '$5 < 1000 {a++} END {print a}' sales.txt