bash-不能更改文件中的行

时间:2016-08-02 13:32:14

标签: bash awk

我必须在文件中的列。一个是值的名称,另一个是相应的值。我想更改分配给特定名称的值。所以我有 infile中:

TB           10
Abs(M_1)          100

我试过这个(不成功地)改变它:

M1_0=$(grep "Abs(M_1)" $infile)
awk '{ gsub("$M1_0", "Abs(M_1)           $M1") };{print}' $infile > $infile.new
mv $infile.new $infile

我已经定义M1每次迭代都不同。我没有得到任何错误,但文件值没有变化。我也试过了几十种sed配置。我不明白我做错了什么。

1 个答案:

答案 0 :(得分:0)

改为使用sed

创建新文件:

sed "s/$M1_0/Abs(M_1)           $M1/g" $infile > $infile.new

保存在同一个文件中(这将从您的脚本中删除mv步骤):

sed -i "s/$M1_0/Abs(M_1)           $M1/g" $infile