迭代文件并更新目录中的行,最好使用Bash脚本
我在一个目录中有300个文本文件,格式如下迭代文件并更新目录中的行,最好使用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
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