如果这个问题之前有人问过,我深表歉意。我认为有人问过类似的问题,但没有一个与此完全相同。
我有一个包含一些列的文件
假设它看起来像这样
1 3 4 12
3 5 8 12.1
. . . .
因此它有值列。我想选择第二列,并为该列中的所有元素添加一个值,这样它看起来可能像
1 3.2 4 12
3 5.2 8 12.1
. x+0.2 . .
但是,我希望迭代器根据我查看的数组中的某些值进行更改。我还希望文件名能够反映出这种变化。因此,我们可以说原始文件名为
文件.txt
但当我浏览文件时,我希望名称能够反映出添加的内容,这样它看起来就像
file_0.txt 这只是在原始值上添加 0,或者没有变化,但最好采用相同的格式以便稍后收集一些值。file_0.2.txt file_0.4.txt ...每次我都会添加 0.2 的增量。
我要说的是,对于我的具体应用,我必须选择一组行来执行此操作,这就是我设置 NR 边界的原因。
file=${1?No file given}
boundsToTest=($(seq 0 0.2 5))
for i in "${boundsToTest[@]}"
do
newFile=$(echo $file | awk -v i="$i" "NR==7,NR==126 {$3=$3+i}")
newFileName="$(basename $file .txt)"_$i.txt
mv $newFile ${newFileName}
done
到目前为止,此方法有效,并相应地更改了名称,但并未将值添加到列中。任何有关传递 awk 变量以在文件内进行数学运算的帮助都将不胜感激。
谢谢你!