sedを使用してアスタリスクを含むテキストを見つけて置き換える方法*

sedを使用してアスタリスクを含むテキストを見つけて置き換える方法*

.procmailrc多くのファイルでテキストを見つけて置き換えたり、使用したいgrepですsed

ファイルから次の行を削除したい(開始部分の改行文字を含む.procmailrc

* !^FROM_MAILER

変更したいファイルの内容全体:

:0
* !^FROM_MAILER
! [email protected]

到着する:

:0
! [email protected]

私が実行するコマンドは次のとおりです。

grep -lir '\n* !^FROM_MAILER' .procmailrc | xargs sed -i 's/\n* !^FROM_MAILER//g'

しかし、それを置き換えることはありません*。残りの行は*上記の行だけです。次のように脱出しても*機能しません。

grep -lir '\n\* !^FROM_MAILER' .procmailrc | xargs sed -i 's/\n\* !^FROM_MAILER//g'

だから私はその中に含まれている行全体を削除するために検索と置換を行う方法を見つけようとしています*

答え1

単独で使用sed:

sed -i '/^* !^FROM_MAILER$/d' file

* !^FROM_MAILER前後に何もない正確な文字列を含む行全体を削除します。このdコマンドは行を削除します。


編集する処置: すべてのファイルで繰り返し置換を実行するには、次のコマンドを使用します。

find /path -type f -exec sed -i '/^* !^FROM_MAILER$/d' {} +

関連情報