Sedを使用した文字列の変更

Sedを使用した文字列の変更

次の文字列を変更したい

allow ^120\.123\.178\.254$

入力する

allow ^124\.130\.23\.235$

sedで。

以下を試しましたが、動作しません。

sed -e 's/allow ^120\.123\.178\.254$/allow ^124\.130\.23\.235$/g' /etc/xxx/file.conf

助けてください?

答え1

ソースコードには\、および文字$が含まれており、追加の引用が必要です。あなたの目標も参照する必要があります^.\

したがって、結果の文字列は少し汚れています。

sed 's/allow \^120\\\.123\\\.178\\\.254\$/allow ^124\\.130\\.23\\.235$/'

g最後は、文字列が1行に複数回表示される場合にのみ必要です。

たとえば、

$ cat x
allow ^120\.123\.178\.254$
$ sed 's/allow \^120\\\.123\\\.178\\\.254\$/allow ^124\\.130\\.23\\.235$/' x 
allow ^124\.130\.23\.235$

答え2

perlオプションの場合は、検索パターンと置換の両方を参照できます。

$ cat file.conf
allow ^120\.123\.178\.254$

$ perl -pe 's/\Qallow ^120\.123\.178\.254$/q(allow ^124\.130\.23\.235$)/e' file.conf
allow ^124\.130\.23\.235$

関連情報