迭代文件并更新目录中的行,最好使用Bash脚本

时间:2016-09-16 10:10:12

标签: bash file for-loop iteration

我在目录中有300个文本文件,格式如下

 regional_vol_WM1.txt

    651328 651328
    553949 553949
    307287 307287
    2558 2558       



regional_vol_WM2.txt

    651328 651328
    553949 553949
    307287 307287
    2138 2138

我想迭代所有这些txt文件,并使用公式在第4行的两列上执行计算

(Value of fourth row /0.824198)*0.8490061

应该创建一个新名称为regional_vol_WM2_prop.txt的新文件,其中前三行具有相同的值,第四行具有更新的值和新计算的输出

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:2)

#!/bin/bash

awk '
FNR == 1 {
  newfilename = FILENAME ; sub(".txt", "_prop.txt", newfilename)
  printf "" > newfilename
}
FNR == 4 {
  $1=($1/0.824198)*0.8490061
  $2=($2/0.824198)*0.8490061
}
{
  print >> newfilename
}
' regional_vol_WM*[0-9].txt