Como posso criar um loop para operação de matriz aritmética?

1

a =

3664938.434
3005450.144
2550000.085

Eu preciso dividir todas as linhas do vetor "a" por 1000 e salvar a saída.

    
por deepblue_86 21.10.2015 / 08:53

3 respostas

2

Você pode fazer:

while read num; do echo "scale=3; $num / 1000" | bc; done <file.txt

bash não suporta aritmética de ponto flutuante, então precisamos usar bc .

Altere scale para ajustar os dígitos após os pontos decimais de acordo com sua necessidade.

Para salvá-lo no mesmo arquivo:

while read num; do echo "scale=3; $num / 1000" | bc; done <file.txt | tee file.txt
    
por heemayl 21.10.2015 / 09:00
2

Uma awk way:

awk '{printf("%f\n",/1000)}'  file.txt
    
por snoop 21.10.2015 / 11:33
0

E uma maneira Perl (supondo que você tenha seus números armazenados em um arquivo, um por linha):

perl -lne 'print $_/1000' file

Se seus valores estiverem armazenados em uma matriz bash:

perl -lane 'print $_/1000 for @F'<<<"${a[@]}"
    
por terdon 21.10.2015 / 14:10