特殊文字を含む大容量ファイルがあります。私が使用したい複数行のコードがありますsed
。
これ:
text = "\
------ ------\n\n\
This message was automatically generated by email software\n\
The delivery of your message has not been affected.\n\n\
------ ------\n\n"
次のようにする必要があります。
text = ""
次のコードを試しましたが、運がありません。
sed -i '/ text = "*/ {N; s/ text = .*affected.\./ text = ""/g}' /etc/exim.conf
何も置換せず、エラーメッセージも表示しません。
私はそれで遊んだが、試したことはすべてうまくいきません。
ベストアンサー1
Perlが構造に来ます:
perl -i~ -0777 -pe 's/text = "[^"]+"/text = ""/g' input-file
-i~
ファイルは「所定の位置」で編集され、バックアップコピーは残されます。-0777
1行ずつ読み込むのではなく、ファイル全体を一度に読みます。
置換はs///
sedと同様に機能します(つまり、text = "
二重引用符を除くすべての項目、二重引用符まで複数回一致)。ただし、この場合はファイル全体に適用されます。