我们从 postgresql.conf 文件中有这一行
#BARMAN# archive_command = 'rsync -a %p [email protected]:/var/lib/barman/main-db-server/incoming/%f'
我通过以下语法删除了单词 - #BARMAN#
sed '/archive_command/ s/#BARMAN#//g'
但 archive_command 一词不在行的开头
如下:
archive_command = 'rsync -a %p [email protected]:/var/lib/barman/main-db-server/incoming/%f'
而预期输出应该是
archive_command = 'rsync -a %p [email protected]:/var/lib/barman/main-db-server/incoming/%f'
如何解决这个问题?
答案1
请注意,您仅替换#BARMAN#
,而不替换后面的空格。
为此,请使用
sed '/archive_command/s/#BARMAN# *//'
或者,允许使用制表符和空格:
sed '/archive_command/s/#BARMAN#[[:space:]]*//'
这将随后直接删除字符串和任意数量的空格或制表符。