2016-09-16 83 views
0

我有一个目录300个文本文件格式如下遍历目录中的文件和更新行,最好使用bash脚本

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一个新文件两列应该被创建,与具有相同的值和第四行与更新后的值与新计算出的输出

前三行

任何建议表示赞赏。

+0

您尝试过什么吗? – redneb

+0

这不是一个*超级用户*类问题吗? – MariusMatutiae

+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 
+0

当我在我的目录中运行awk文件时出现错误:以下是错误awk:15:意外字符'。' – DevanDevak

+0

你确定你有终止单引号? awk认为文件名arg是awk脚本的一部分,它不应该这样做。它是bash中的一个文件名glob。 –

+0

@DannyDaglas不,我没有终止单引号,正常的文件名遵循命名约定:regional_vol_GM_122.txt – DevanDevak