[Tokyo.pm] one liner
Inaba Hiroto
inaba @ st.rim.or.jp
2000年 2月 3日 (木) 09:50:32 CST
稲葉です。
maeda @ src.ricoh.co.jp wrote:
>今日のワンライナー
>
>perl -ne 'sub bold{$x=shift;$x=~s/(.)/$1\b$1/g;$x} print "$ARGV:$.:$_" if s/(group)/bold($1)/gie; close ARGV if eof(ARGV) ' sql-*.txt | less
>
>sql-*.txtからgroupをさがして、見つかったらファイル名、行番号とと
>もに太字で表示する。
自分ならシェルのforを併用して、
for f in sql-*.txt; do
perl -ne 'print "'$f':$.:$_" if s/(group)/($x=$1)=~s:(.):$1\b$1:g;$x/gie' $f;
done | less
とします。subを使った方がわかりやすいですが、ワンライナーはわかりやすさより
短さと思うので。
自分もいくつかワンライナーを引っ張り出してきました。
perl -e '@a = <>; print splice @a, rand @a, 1 while @a' file
fileの行をランダムな順に全部出力する。
perl -e 'print "$h{$_} $_\n"
for sort{$h{$a}<=>$h{$b} or $a cmp $b} grep !$h{$_}++, map /\w+/g, <>' file
fileの単語の出現頻度を数えて順に表示する。
--
稲葉 浩人 Inaba Hiroto <inaba @ st.rim.or.jp>
Tokyo-pm メーリングリストの案内