$ perl -nle '$a=length if($a<length);END{print $a}' orcl_ora_879.trc 73
追記:
こういう書き方もあるのか。
$ perl -MList::Util=max -lne 'push(@a,length);END{print max(@a)}' orcl_ora_879.trc 73
(↓)このへんを参考にしました。
max(List::Util)
配列の要素の最大値を求めるにはList::Utilモジュールのmax関数を使用します。
use List::Util qw(max); $ret = max(@array);よく使用する関数・標準モジュール一覧 - Perlゼミ(サンプルコードPerl入門)
perl -MList::Util=min,max -e 'my(@arr) = (1, 2, 3); print min(@arr), max(@arr), "\n";'ワンライナー化モジュールAcme::OneLinerを更新 - すぎゃーんメモ
追記(2009/09/07):
いきなり仕事で役に立った。
(↓)こんな感じのことをした。
perl -MList::Util=min,max -lne '/^(.{12}).*(foo|bar)/ and push(@a,$1);eof and printf "%s %s %s\n",substr($ARGV,3,7),min(@a),max(@a) and @a=()' hoge<1-500>.log
複数のファイルを処理するときに、1ファイルにつき最後に1回だけ何か処理したいときは eof を使えばいいのか。
END{} は全ファイルを処理した後に1回だけ何か処理したいときに使う。