実用的Perlワンライナー

文字列置換

foo.txtファイルの"foo"という文字列を全て"bar"に変更する。

$ perl -pi -e 's/foo/bar/g' foo.txt

バックアップ作成も同時に行いたい場合は以下のようにします。

$ perl -pi'*.back' -e 's/foo/bar/g' foo.txt

元ファイル名に.backが付いたファイルのバックアップが作成されます

findコマンドやxargsコマンドと組み合わせて使用すると、更に便利になります。
以下は、ディレクトリ以下の"*.config"にマッチするファイル全ての"foo"を"bar"に置換えバックアップを作成します。

$ find -name "*.config" -exec perl -pi'.back' -e 's/foo/bar/g' {} \;

$ find -name "*.config" | xargs perl -pi'.back' -e 's/foo/bar/g'

フィールドの切り出し

カンマ(,)で区切られたテキストファイルの一番目と2番目のフィールドを出力する

$ perl -F, -lane 'print $F[0],"|",$F[1]' test.csv

-Fを省略するとセパレータ(区切り文字)は、スペースになります。
以下はps -e の結果の一番目のフィールドのみを出力しています。

$ ps -e | perl -lane 'print $F[0]'

上記、実用的なPerlワンライナーの一部を紹介しました。

Perlワンライナーを使いこなすには、Perlのオプションを理解する必用があります。


スポンサードリンク