ファイルがあります。foo.txt
hello world
first line to change
second line to change
foo.txt
私はそれを読み取りに変更するperl one-linerを作成したいと思います。
hello world
this is
my new text
頑張った
perl -p -i -e 's/ first line to change\n second line to change/ this is\n my new text/g' foo.txt
ただし、このスクリプトはファイルに対して何もしません。私の一行に問題がありますか?
答え1
デフォルトでは、入力は一度に1行perl
ずつ読み取られるため、正規表現は絶対に一致しません。複数行入力を使用するには、2 つのオプションがあります。
短絡モードを有効にする:
perl -i.bak -00pe ...
または、ファイル全体を飲み込んでください。
perl -i.bak -0777pe ...
(上記の値は慣例的にファイル全体を占めることに-0400
なります)perl
-0777