如何使用bash脚本从文件中获取特定行的除法和产品?

时间:2015-02-26 23:18:16

标签: bash shell

我想从文件中将第1行划分为第2行,将第2行划分为第4行。但我不能这样做。我在输出文件中得到了这个结果:inf [1] / inf [2] inf [2] * inf [4]。如何将第1行划分为第2行,将第2行划分为第4行?

输入文件:

2233.3000
2190.0508
2172.2361
2189.3050
2199.3000
2193.2461

我的代码:

#!/bin/bash

result="input.xvg"
while read line
do
   division=$line[1]/$line[2];
   product=$line[2]*$line[4]
   echo "$division $product" > output.xvg

done < input.xvg

1 个答案:

答案 0 :(得分:1)

  • bash需要一些额外的语法来进行算术运算。 - ref
  • 它只能用整数运算,所以你需要调用一个可以浮点运算的程序,bc是一个方便的程序。
  • 要将文件行读入数组,请使用mapfile(创建零索引数组) - ref
  • 您需要添加大括号来提取数组值:${line[1]}而非$line[1] - ref
#!/bin/bash
mapfile -t line < input.xvg
division=$(bc -l <<< "${line[0]} / ${line[1]}")
product=$(bc -l <<< "${line[1]} * ${line[3]}")
echo "$division $product" > output.xvg