
我有這個 :
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
我正在嘗試計算第五列值在 0-999 範圍內的行數。
當我嘗試跑步時,它給我的計數是 3,而實際上應該是 6。
答案1
您的兩位數字與正規表示式不符[0-9][0-9][0-9]
。
此外,將文件儲存在變數中然後使用它來列印它echo
是真的餿主意。看為什麼 printf 比 echo 更好?,但更重要的是,您可以代替cat file
命令執行echo
操作。
實際上,您可以使用 Awk 完成所有事情,然後您甚至不需要cat
.由於您沒有顯示任何負數,因此我只會檢查“少於一千”。
awk -F: '$5 < 1000 {a++} END {print a}' sales.txt