オススメ

sed をやめて perl にしよう。perl sedのススメ 文字列置換・一括

sedは起動にも使われていたりシステム全体に関わっていたりするので、sedを削除したりリネームするわけにはいきません。sedはなくてはならないツールです。

ただ、正規表現の文法はperlでいいよね派なので。覚えることは減らしたい。方言は減らしたい。

zsh なので、.zshrcに


alias psedbak="perl -i.bak -pe"
#perl -i -pe 's/(123)/${1}456/' メモ
という記述をいれています。-iで上書き、-i.bakとするとその拡張子(bak)でバックアップが作られます。これは古典的SEDにはない機能です。

abc.txt には、Doctor という文字列があったとして、

$ perlsed 's/doctor/Dr./' abc.txt

で一括で変更できます。この記述内容をperlの正規表現で詳細に記せるので便利なわけです。sedの文法は忘れてもいいです。私はほぼ忘れたいと思います。

Dr.James Brown male
Dr.Ann Esex female
という医師名簿テキスト1.txt があって、男性にMr. と女性にMs.とつけ直すとすると
perlsed 's/^(Dr.)(.*? )(female)$/Ms.$2/' 1.txt
perlsed 's/^(Dr.)(.*? )(male)$/Mr.$2/' 1.txt


と2回繰り返せば複雑な記述をしなくても処理できますね。
一行でもいけるでしょう。

私が日常必要としているのはこの程度なのでsedでもいいわけですが、perlの作法だけ気にすればいいので結局楽かなと思っている次第です。