Bash:迭代几个文件并对每个文件执行不同的更改

时间:2014-03-19 15:21:15

标签: bash shell replace sed text-processing

我想在几个txt文件中更改一个变量。但是这个变量在每个txt文件中不应该相等。 我尝试过这个,但它不起作用。

for file in ./*.txt ;do
    for value in $(seq 1 5); do
        sed -i 's/x_max=.*/x_max='$value'/ ' $file
    done
done

所以每个x_max都得到了值:5

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题。仅替换每个文件一次,每次都使用不同的值。

value=1
for file in *.txt; do
  sed -i 's/x_max=.*/x_max='$value'/' $file
  value=$((value + 1))
done

答案 1 :(得分:0)

应该这样做 - 只迭代一次并在每次运行后将计数器提高1:

counter=1

for file in ./*.txt ;do
    sed -i 's/x_max=.*/x_max='$counter'/ ' $file
    (( counter++ ))
done