更改包含'with sed的配置文件中的值

时间:2014-12-01 09:18:15

标签: regex sed configuration-files

我想用sed替换postgresql.conf中的值,这是相关部分:

#archive_mode = off
#archive_command = 'blah'

要将archive_mode设置为on,请使用以下sed命令,该工作正常:

sed -ri "s/#(archive_mode) .*$/\1 = on/" postgresql.conf

现在我还要将archive_command更改为'bleh'。我尝试了以下命令,但是sed总是抱怨'字符:sed: -e expression #1, char 41: unknown option to s'

sed -ri "s/#(archive_command) .*$/\1 = 'bleh'/" postgresql.conf

我尝试使用'转发\',但这并没有帮助,是否有人知道我如何能够将其包括在内。在我的替换字符串?

1 个答案:

答案 0 :(得分:1)

您只需删除#符号。

$ sed -r "s/(archive_command) .*$/\1 = 'bleh'/" file
archive_mode = off
archive_command = 'bleh'

要做到这两点。

$ sed -r "s/(archive_mode) .*$/\1 = on/;s/(archive_command) .*$/\1 = 'bleh'/" file
archive_mode = on
archive_command = 'bleh'

使用不同的分隔符。

$ sed -r "s~(archive_mode) .*$~\1 = on~;s~(archive_command) .*$~\1 = 'bleh'~" file
archive_mode = on
archive_command = 'bleh'