我有一个名为 的文本文件t1.txt
,它包含:
300
400
500
600
现在我想找出这段文本中有多少个数字小于 450 我给出以下代码:
b=0
for i in $(cat t1.txt)
do
if [$i -lt 450]
then
((b=b+1))
fi
done
echo b
但它不起作用。
我应该怎么办?谢谢。
答案1
b=0
for i in $(cat t1.txt)
do
# convert float to int
i=$(echo $i | cut -d. -f1)
if [ $i -lt 450 ] # comment: need spaces next to the the square brackets
then
((b=b+1))
fi
done
echo $b # comment: need to $
答案2
awk 擅长于此:
$ awk '$1<450{c++} END{print c+0}' t1.txt
2
怎么运行的:
$1<450 {c++}
对于第一个字段小于 450 的任何行,该变量
c
都会递增 1。END{print c+0}
读入所有行后,
c
将打印 的值。
这些数字可以是整数或浮点数。 awk 两者都理解。
答案3
#!/bin/bash
while read line
do
if [ "${line}" -lt "450" ]
then
count=$((count+1))
fi
done < t.txt
echo ${count}