我想用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
我尝试用'
逃离'
,但这没有帮助,有谁知道我如何让 sed 在我的替换字符串中包含 '?
您只需要删除#
符号即可。
$ 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'