我想用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
我尝试使用'
转发\'
,但这并没有帮助,是否有人知道我如何能够将其包括在内。在我的替换字符串?
答案 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'