如何在 shell 脚本中计算文本文件中的数字

如何在 shell 脚本中计算文本文件中的数字

我有一个名为 的文本文件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}

相关内容