sed + 从特定行中删除单词

sed + 从特定行中删除单词

我们从 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:]]*//'

这将随后直接删除字符串和任意数量的空格或制表符。

相关内容