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 $
Eu tenho um arquivo de texto chamado t1.txt
, contém:
300
400
500
600
Agora, quero descobrir quantos números neste texto são menores que 450 E eu dou o seguinte código:
b=0
for i in $(cat t1.txt)
do
if [$i -lt 450]
then
((b=b+1))
fi
done
echo b
mas não funciona.
O que devo fazer? Obrigado.
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 $
Awk é bom nisso:
$ awk '$1<450{c++} END{print c+0}' t1.txt
2
Como funciona:
$1<450 {c++}
Para qualquer linha para a qual o primeiro campo é menor que 450, a variável c
é incrementada em um.
END{print c+0}
Depois de lermos todas as linhas, o valor de c
é impresso.
Os números podem ser inteiros ou ponto flutuante. Awk entende os dois.
#!/bin/bash
while read line
do
if [ "${line}" -lt "450" ]
then
count=$((count+1))
fi
done < t.txt
echo ${count}
Tags bash linux shell shell-script