.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' {} +