Perlワンライナー

-e 基本

 $ perl -e 'print "foo"'
 foo

-p 1行ずつ読み込み、プリントする

 $ perl -p -e '' /etc/passwd
 root:x:0:0:root:/root:/bin/bash
 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 bin:x:2:2:bin:/bin:/bin/sh
 $ perl -p -e 'print ++$i, ": "' /etc/passwd
 1: root:x:0:0:root:/root:/bin/bash
 2: daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 3: bin:x:2:2:bin:/bin:/bin/sh
 $ perl -p -e 's/^[^:]+/\*\*\*/;' /etc/passwd
 ***:x:0:0:root:/root:/bin/bash
 ***:x:1:1:daemon:/usr/sbin:/bin/sh
 ***:x:2:2:bin:/bin:/bin/sh

-i ファイルを上書きする

 $ perl -i -p -e 's/a/A/g' sample.txt

sample.txtは内容が修正され、上書きされる。 以下のようにすると、バックアップファイル(sample.txt.bak)が作成される。

 $ perl -i.bak -p -e 's/a/A/g' sample.txt

BEGIN{} END{} 前後に処理を加える

 $perl -p -e 'BEGIN{ print "/etc/passwd:\n";} print ++$i, ": "; END{print "done.\n";}' /etc/passwd
 /etc/passwd:
 1: root:x:0:0:root:/root:/bin/bash
 2: daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 3: bin:x:2:2:bin:/bin:/bin/sh
 done.

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS