divisão bash de números no arquivo de texto

1

Eu tenho dois números no arquivo test.txt, gostaria de uma maneira de dividir o segundo número pelo primeiro número e atribuir o resultado a uma variável ou arquivo em um script bash que eu possa usar. Eu usei awk "NR==1" test.txt para obter number1 exibido na linha de comando, mas dentro do script, eu tentei awk "NR==2" test.txt / awk "NR==1" test.txt e todas as combinações de citações / colchetes de tal. A linha de comando usada fornece num2 / num1 como resultado, não o resultado de divisão ou erro de sintaxe. Eu estou usando o Debian Linux como SO.  arquivo test.txt contém

0250368000
0182885654

Eu quero o segundo número dividido pelo primeiro var=0182885654/0250368000 Os números mudam de tempos em tempos e eu quero um script que processe os números.

    
por Harold Meneley 14.03.2015 / 18:44

4 respostas

3

Atribuir a uma variável

var=$(awk 'NR==1{a=$0}NR==2{print $0/a}' test.txt)

ou saída para um arquivo:

awk 'NR==1{a=$0}NR==2{print $0/a}' test.txt > output
    
por 14.03.2015 / 18:53
1
quotient=$(dc -f test.txt -e 'r[num desired precision]k/p')
    
por 15.03.2015 / 01:28
-1
 awk ' NR == 1 { a = $1 }
       NR == 2 { b = $1 }
       END { print a
             print b
             print b/a } ' data

onde os dados são um arquivo de texto contendo

0250368000
0182885654
    
por 15.03.2015 / 15:16
-1

Eu usei um velho truque passo a passo para obter algo que funcionasse, mas gostaria de fazer tudo em uma etapa.

num1=$(awk 'NR==2' test1.txt)
echo $num1 #result is 0247421924
num2=$(awk 'NR==1' test1.txt)
echo $num2 #result is 0250368000
score='awk 'BEGIN{printf("%0.0f", '$num1' * 100 / '$num2' )}''

echo $score # result is 99

Como você pode ver, eu tive que multiplicar o primeiro número por 100 para obter um inteiro. Desculpe, não conseguimos o espaçamento de linha para trabalhar

    
por 15.03.2015 / 14:07