作者: Zazel
日時: 2002/5/06(12:59)
既に第3題で盛り上がっていますが、早過ぎ。
しかもエキスパートが速攻で出したら、abcじゃないぞっ。(^_^;

    %%%%

というわけで、2題目のsed版です。
日本語対応のsedでは意図したようには動きませんので、未対応状態の
sedに漢字コードがEUC-JPのファイルを入力するのがお勧めです。

sedは変数が2つ、しかも片方は主に保存用な感じの言語(^_^)です。
よって唯一の変数に文字列を全部連結して入力しながら、これも
ほぼ唯一の操作である置換を駆使してまとめています。そして最終的に
1項目ごとに取り出しながら無理矢理フォーマットして出力してます。

なおSolarisやHP-UXのSYSV系sedのバグ(?)を回避するためのコードが
入っているので少し回り道してます。

-----^ index.sed ( date:02-05-04 time:16:04:34 ) ---< cut here
1s/$/\
/
s/::*/:&/g
s/;/ : /g
G
s/\n/;/g
s/^\([0-9]*\) \([^;][^;]*;\)\(.*;[0-9,]*\) \2/\3,\1 \2/
h
${
    s/^/;/
    s/;;$/;/
    h
    t nop
    :nop
    s/.*;\([0-9,]*\) \([^;]*\);$/\2                     \1/
    t print
    b end
    : print
    s/ : /;/g
    s/:\(:*\)/\1/g
    s/^\(....................\).* \([0-9,]*\)$/\1 ... \2/
    p
    g
    s/;[^;]*;$/;/
    h
    t nop
    :end
    d
}
d
-----$ index.sed ( lines:30 words:47 size:431 ) ----< cut here

(* SEKI Masatoshi  /  zazel@..."jp"         *)
(*  Would you hold my hand? Softly, let's linger. *)