Script de shell para dividir números dentro de um arquivo

1

Eu tenho uma única coluna e 12 linhas. Cada linha tem valores numéricos. Eu quero dividir cada valor de linha por algum número constante (digamos C) usando scripts shell (bash). Como fazer isso ? Obrigado antecipadamente ..

    
por Palash SInha 23.09.2013 / 19:26

3 respostas

6

martin@dogmeat ~ % cat test 
100
50
25
martin@dogmeat ~ % cat test | while read i; do echo "$i/2" | bc; done
50
25
12
martin@dogmeat ~ % cat test | while read i; do echo "scale = 5; $i/2.0" | bc; done
50.00000
25.00000
12.50000

bc não tem uma função de arredondamento, portanto, se você quiser ter esses números adequadamente arredondados, provavelmente terá que implementar a função por conta própria.

    
por 23.09.2013 / 19:39
2

Se você concordar com a divisão de números inteiros:

c=3
while read num; do
    echo $(( num / c ))
done < file

caso contrário, você pode usar

awk -v c=3 '{ print $1/c }' file
    
por 23.09.2013 / 20:16
1

Para contornar as complexidades da aritmética de ponto flutuante do shell, por que não usar o Perl? Aqui está um one-liner para fazer isso:

C=3 perl -ne 'printf "%.2f\n",$_/$ENV{C}' your_file

A resposta gigantesca a esta questão também pode ser interessante para você.

    
por 23.09.2013 / 20:20