私はこれを持っています:
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