br sed + remove a palavra da linha específica

1

temos essa linha do arquivo postgresql.conf

#BARMAN# archive_command = 'rsync -a %p [email protected]:/var/lib/barman/main-db-server/incoming/%f'

Eu removo a palavra - # BARMAN # pela seguinte sintaxe

sed '/archive_command/ s/#BARMAN#//g'

mas a palavra archive_command não está no começo da linha

como o seguinte:

    archive_command = 'rsync -a %p [email protected]:/var/lib/barman/main-db-server/incoming/%f'

enquanto a saída esperada deve ser

archive_command = 'rsync -a %p [email protected]:/var/lib/barman/main-db-server/incoming/%f'

como consertar isso?

    
por yael 13.09.2017 / 16:14

1 resposta

2

Observe que você está substituindo apenas #BARMAN# e não o (s) espaço (s) posteriormente.

Para fazer isso, use

sed '/archive_command/s/#BARMAN# *//'

ou, para permitir guias e espaços:

sed '/archive_command/s/#BARMAN#[[:space:]]*//'

Isso removerá a sequência e qualquer número de espaços ou guias depois.

    
por 13.09.2017 / 16:50