perlのワンライナーでよく出てくるのはこんなもの
$ echo "hoge\nfuga\npiyo" | perl -pe 's/ge/GE/; s/pi/PI/;'
hoGE
fuga
PIyo
この場合、1行ずつ評価するため複数行の書き換えは出来ない。
複数行の場合-0
オプションを使ってオプション修飾子にm
つけて実行すれば良い。
$ echo "hoge\nfuga\npiyo" | perl -0pe 's/ge\nfu//m'
hoga
piyo
解説
-p
はデフォルトでは1行ずつ-e
の引数を評価する。つまりセパレータが\n
。
-0
でセパレータがヌル文字(\0
)になる。つまり、ファイル全体を一度に読み込むことになる(よって、巨大なファイルに実行するのはおすすめしない)。
また、正規表現のオプション修飾子にm
を指定し複数行モードにする(s/hoge/fuga/m
←このm
)
その他
perlのワンライナー自体はここらへん見たらいいと思う