如何使用bash脚本替换一个文件中的变量值?

时间:2017-07-03 06:27:26

标签: bash shell sed replace

我有一个Makefile,我希望在运行时使用bash脚本更改/替换变量的值。

SUBDIRS =通用数据库通信

我想用 -

替换SUBDIRS的这个值
 protocols 

如何使用shell脚本替换它?

我试过

  sed 's/\(SUBDIRS =\).*/\protocols/' Makefile

但这不能正常运作。请建议。

1 个答案:

答案 0 :(得分:0)

sed -r 's/(SUBDIRS = ).*/\1protocols/' Makefile
SUBDIRS = protocols

使用反向重新声明,在()内捕获部分字符串并调用捕获的组。稍后,可以以\1\2等方式调用每个捕获的组。您最多可以捕获9个捕获组。

如果有多行文字,您可以使用awk

多行示例输入:

echo "$y"
SUBDIRS = common database communication
                   ola ola ola
                   bla bla bla


echo "$y" |awk -v RS="\n\n"  'BEGIN{FS=OFS="="}{$2="protocols"}1'
SUBDIRS =protocols