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

これにより、文字列とスペースまたはタブが直接削除されます。

おすすめ記事