shell 腳本計算符合範圍值的行

shell 腳本計算符合範圍值的行

我有這個 :

 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

相關內容