使用bash脚本替换配置文件变量

时间:2015-03-15 10:37:50

标签: linux bash shell sed

我试图在ssh配置文件中附加一个值,但是如果指定两个不同的值它似乎不起作用,它会读取第一个而不是第二个。

似乎合情合理,而不是试图重写整个文件,只是修改价值。

目前的价值是:

Port 22

我想进入并将值更改为:

Port 222

我能想出的最好的是:

sed -c -i "s/\(Port *= *\).*/\1$REPLACEMENT_VALUE/" /etc/ssh/sshd_config

但是我知道这是不对的,因为它的工作方式是期望在值和变量之间有一个等号。

我需要脚本执行以下操作:

  • 查找变量(即端口)
  • 使用我自己的行
  • 切换此行

1 个答案:

答案 0 :(得分:3)

我认为你的意思是,

sed 's/.*\bPort\b.*/REPLACEMENT_VALUE/' file

示例:

$ REPLACEMENT_VALUE="Port 222"
$ echo -e "foo\nPort 22" | sed "s/.*\bPort\b.*/$REPLACEMENT_VALUE/"
foo
Port 222