あけましておめでとうございます。本年もよろしくお願いいたします。
On Thu, 01 Jan 2004 02:02:28 +0900
dune <FZH01112@...> さんwrote:
> 極悪です。
>
> Ueta Masayuki さんの [TSfree:584] Re: 欄区切りのソート から
> >(改行が欄の区切りで、空行がレコードの区切り)
>
> それでは、各レコードは空行で区切られており、ひとつのレコード
> は改行で区切られた複数のフィールドから成ってる、ということで。
>
> D:% cat sort_fields2.pl
> use Sort::Fields;
> $/ = "";
> my @paragraph = grep(s/\n*\Z/\n\n/,<STDIN>);
> print fieldsort([@ARGV,0],@paragraph);
私はオーソドックスに考えてみました。
perl mlsort.pl ソート対象行 infile > outfile
#mlsort.pl
$/="";$lnum = shift;
while(<>){
($mlr{(split(/\n/))[$lnum - 1]} = $_) =~ s/\n*\Z/\n\n/;
}
foreach $key (sort keys(%mlr)){
print $mlr{$key};
}
>
> D:% cat hoge2.txt
> お
> け
> さ
>
> え
> こ
> し
>
> う
> く
> せ
>
> あ
> か
> そ
>
> い
> き
> す
> D:% perl sort_fields2.pl 3 < hoge2.txt
> お
> け
> さ
>
> え
> こ
> し
>
> い
> き
> す
>
> う
> く
> せ
>
> あ
> か
> そ
>
>
> D:%
>
> Sort::Fields::fieldsort() の中身は Schwartz 変換なので、
> 速さを競うなら Guttman-Rosler 変換にしたほうがよさげです。
> --
> FZH01112 at nifty.com
> http://hpcgi1.nifty.com/dune/gwiki.pl?
>
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/