sed - "/"を含むテキストの検索と置換

sed -

sedを含むテキストを検索して置き換える方法は/

現在動作していない次のコマンドを使用しています

sed -i "s/queue_directory = /var/spool/postfix-secondary/queue_directory = /var/spool/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

ベストアンサー1

1つの方法は、他の区切り文字を選択することです/。たとえば、次のようにします|

sed -ie "s|queue_directory = /var/spool/postfix-secondary|queue_directory = /var/spool/postfix-$newnumber|g" /etc/postfix-$newnumber/main.cf

別の方法は、バックスラッシュを別のスラッシュにエスケープすることです。

sed -ie "s/queue_directory = \/var\/spool\/postfix-secondary/queue_directory = \/var\/spool\/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

特定の用途には2つの提案があります。まず、同じ行で置換が何度も起こると予想していない限り、gフラグが必要だとは思わない。第二に、ディレクティブを変更しようとすると、以前の値が何であってもディレクティブが変更される可能性が高くなります。たとえば、

sed -ie "s|^queue_directory =.*|queue_directory = /var/spool/postfix-$newnumber|" /etc/postfix-$newnumber/main.cf

おすすめ記事