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
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.
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
quotient=$(dc -f test.txt -e 'r[num desired precision]k/p')
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
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