como posso fazer o cálculo de números a partir do arquivo de texto no shell script

0

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.

    
por Leonard 13.10.2016 / 00:55

3 respostas

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 $
    
por 13.10.2016 / 01:11
1

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.

    
por 13.10.2016 / 01:18
0
#!/bin/bash

    while read line
    do
            if [ "${line}" -lt "450" ]
            then
                    count=$((count+1))
            fi
    done < t.txt

    echo ${count}
    
por 13.10.2016 / 03:01