我有这个 :
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