固定長テキストを項目でソートする
先日ひさびさにPerlを使ってツールを作りました。もうソラで書く自身はあまりありませんが、CVSのhistoryコマンドで得た出力を編集したいというのを頼まれたので、ちょっと作ってみました。
#!/usr/bin/perl # sorter.pl use strict; # 固定長テキスト→配列 my @rows = (); while (<>) { my @row = unpack "A2 A23 A8 A5 A37 A38 A*", $_; push @rows, \@row; } # ソート my @sorted = sort { $b->[3] cmp $a->[3] || # revision (reverse) $a->[4] cmp $b->[4] || # path $a->[5] cmp $b->[5] # file } @rows; # フォーマット出力 for (@sorted) { printf "%s %-4s %s/%s\n" , $_->[1], $_->[3], $_->[5], $_->[4]; # updated time, revision, path+file } exit;
使い方は以下の通り。
$ cvs history -x M -z +0900 | ./sorter.pl