【Perl】 awk的に使えるワンライナー

投稿日: / 更新日:

この記事は2年以上前に書かれたものです。情報が古い可能性があります。

標準入力やファイルを1行ずつ読み込んで処理するPerlのワンライナーとして、以下のようなものが良く知られています。

後者には暗黙的なprintが付加される、という点が異なります。

これらを憶えておくだけで、grepsed的な使い方ができ、しかもPerlの正規表現で複雑なパターンも記述できるので、ちょっとしたテキストの加工などに非常に重宝します。

一方、awk的な使い方をしたい時、今までは、

のようにやっていたんですが、以下のように-a (auto split)オプションと-F (Field separator)オプションを使うことで、もう少し簡単に記述できることを最近知りました。

-aを指定することで、フィールドセパレータでsplitされた文字列が配列@Fへ自動的に格納されるので、上記のように$F[n]で参照することができます。awkと違って、フィールド番号は0から始まりますが、プログラマーから見れば特に不自然はなく、大した問題にはならないでしょう。

なお、いずれのオプションも、詳細はperldoc perlrunで確認することができます。たまに読み返してみると、新たな発見があるかもしれません。

2012/02/05 00:48 追記: -pオプションを使えば、もう少し簡単に記述できますね…

Hinemos導入はアトミテックにお任せください

見積もりを依頼する

最新情報発信中

Xやメルマガでも、Hinemosの保守、
開発、導入、構築やカスタマイズ等の
お役立ち情報を発信しています。
是非ご登録ください。