Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代文件并更新目录中的行,最好使用Bash脚本_Bash_File_For Loop_Iteration - Fatal编程技术网

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

迭代文件并更新目录中的行,最好使用Bash脚本,bash,file,for-loop,iteration,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行和第4列执行计算 (Val

我在一个目录中有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行和第4列执行计算

(Value of fourth row /0.824198)*0.8490061
应创建一个新文件,其名称为regional_vol_WM2_prop.txt,前三行具有相同的值,第四行具有更新的值和新计算的输出



非常感谢您的建议。

您尝试过什么吗?这不是超级用户类型的问题吗?第四行有两列,您感兴趣的是哪个值?@PS。两个值都应该是updated@redneb,我可以遍历我为其编写代码的目录中的文件,我只是想用第四行中新更新的数据创建一个新文件。您尝试过什么吗?这不是超级用户的问题吗?第四行有两列,您感兴趣的是哪个值?@PS。这两个值都应该是updated@redneb,我可以遍历我为其编写代码的目录中的文件,我只是想用第四行中新更新的数据创建一个新文件。在我的目录中运行awk文件时,我遇到了一个错误:以下是错误awk:15:意外字符“.”您确定有终止单引号吗?awk认为文件名arg是awk脚本的一部分,但它不应该这样做。在bash中是一个文件名glob。@DannyDaglas否我没有终止单引号,一个普通文件名遵循以下命名约定:regional_vol_GM_122.txt简而言之,脚本文件的格式应为:#/bin/bash\n awk脚本文件名。“awk”之后和文件名模式之前的所有内容都应该用单引号括起来(脚本)。文件名模式应与您需要处理的内容相匹配。另外,请确保awk脚本部分中没有单引号。我仍然收到一个错误区域\u vol\u WM\u atlas[0-151]。txt:没有这样的文件或目录我在我的目录中运行awk文件时收到一个错误:以下是错误awk:15:意外字符。“”你确定有终止单引号吗?awk认为文件名arg是awk脚本的一部分,但它不应该这样做。在bash中是一个文件名glob。@DannyDaglas否我没有终止单引号,一个普通文件名遵循以下命名约定:regional_vol_GM_122.txt简而言之,脚本文件的格式应为:#/bin/bash\n awk脚本文件名。“awk”之后和文件名模式之前的所有内容都应该用单引号括起来(脚本)。文件名模式应与您需要处理的内容相匹配。另外,请确保awk脚本部分中没有单引号。我仍然收到一个错误区域\u vol\u WM\u atlas[0-151]。txt:没有这样的文件或目录
#!/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