perlをコマンドラインから使う

UNIX には「1行=1レコード」とみなせるようなテキスト・データベースの処理に 便利なコマンドがたくさんあります(awk 言語はその代表です)。

ここでは perl を使って テキストの加工のための「1行スクリプト」を 試してみましょう。


準備

まず、下記のようなファイル sample.dat を用意して下さい。
taro 90.3
jiro 62.8
saburo 21.1
shiro 28.0
goro 40.5
kenji 37.9
takashi 55.1
masao 71.3
このファイルで、各行を「レコード」、空白で区切られた1つ1つの要素を 「フィールド」と呼びます。

あるフィールドだけ抜き出す

ファイルを作ったら、次のように実行してみましょう。
% perl -lane 'print $F[1]' sample.dat
こんな結果が出ると思います。
90.3
62.8
21.1
28.0
40.5
37.9
55.1
71.3
では、今度は次のように実行してみましょう。
% perl -lane 'print "$F[1] $F[0]"' sample.dat
こうなりましたか?
90.3 taro
62.8 jiro
21.1 saburo
28.0 shiro
40.5 goro
37.9 kenji
55.1 takashi
71.3 masao

printf()も使えます

スクリプトをこう直してみましょう。
% perl -ane 'printf "%5.2f %s\n",$F[1],$F[0]' sample.dat
結果はこうです。
90.30 taro
62.80 jiro
21.10 saburo
28.00 shiro
40.50 goro
37.90 kenji
55.10 takashi
71.30 masao

Last modified: Wed Jun 18 16:17:09 1997