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

相关内容