bash 文本文件中数字的除法

bash 文本文件中数字的除法

我在 test.txt 文件中有两个数字,我想要一种方法将第二个数字除以第一个数字并将结果分配给我可以使用的 bash 脚本中的变量或文件。我曾经awk "NR==1" test.txt在命令行上显示 number1,但在脚本内部,我尝试过awk "NR==2" test.txt / awk "NR==1" test.txt所有此类的引号/括号组合。命令行使用给出 num2/num1 作为结果,而不是除法结果或给出语法错误。我使用 Debian Linux 作为操作系统。 test.txt 文件包含

0250368000
0182885654

我想要第二个数字除以第一个数字。var=0182885654/0250368000 数字会不时变化,我想要一个可以处理这些数字的脚本。

答案1

分配给变量

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

或输出到文件:

awk 'NR==1{a=$0}NR==2{print $0/a}' test.txt > output

答案2

quotient=$(dc -f test.txt -e 'r[num desired precision]k/p')

答案3

 awk ' NR == 1 { a = $1 }
       NR == 2 { b = $1 }
       END { print a
             print b
             print b/a } ' data

其中 data 是一个文本文件,其中包含:

0250368000
0182885654

答案4

我使用了一种古老的一步一步的技巧来获得一些有用的东西,但我希望一步一步完成这一切。

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

正如您所看到的,我必须将第一个数字乘以 100 才能得到一个整数。抱歉,无法使行间距发挥作用

相关内容