Path: sran124!katsu From: katsu@sra.co.jp (WATANABE Katsuhiro) Message-ID: Date: 12 Jun 90 18:12:43 Organization: Software Research Associates, Inc.,Japan Newsgroups: sra.unix Subject: sed script in uexpr (Unix Magazine 1990 Jun Page127) References: Distribution: sra 私は Unix Magazine の「Little Language」という連載が大好きで、 届くと真っ先に目を通します。過去この記事からどれだけ薫陶を受けたか わかりません。 個人的なことはおいておいて、1990年6月号の同連載の記事で、 次のような、数字を3桁ごとに区切る script の例がのっています。 (p127 の uexpr を引用しますが、htotal でも2回にわたって同様の ことをやっています。 : : : : : : : : # eval expr "$EXARG" | ¥ sed -e "s/^¥(-*¥)¥([1-9][0-9][0-9]¥)¥($DIGIT¥)¥($DIGIT¥)¥$/¥1¥2,¥3,¥4/" ¥ -e "s/^¥(-*¥)¥([1-9][0-9]¥)¥($DIGIT¥)¥($DIGIT¥)¥$/¥1¥2,¥3,¥4/" ¥ -e "s/^¥(-*¥)¥([1-9]¥)¥($DIGIT¥)¥($DIGIT¥)¥$/¥1¥2,¥3,¥4/" ¥ -e "s/^¥(-*¥)¥([1-9][0-9][0-9]¥)¥($DIGIT¥)¥$/¥1¥2,¥3/" ¥ -e "s/^¥(-*¥)¥([1-9][0-9]¥)¥($DIGIT¥)¥$/¥1¥2,¥3/" ¥ -e "s/^¥(-*¥)¥([1-9]¥)¥($DIGIT¥)¥$/¥1¥2,¥3/ これに対して、私は次のような別案を提案します。 : : : : : : : : # eval expr "$EXARG" | ¥ sed ' s/$/,/ : d1000 s/¥([0-9]¥)¥([0-9][0-9][0-9],¥)/¥1,¥2/ t d1000 s/,$// ' [別案の特徴] (1)原案では、10億を越える数字に対してはうまくうごかないという制限が あったが、別案ではもっともっと大きくても(10^1000 ぐらい?)よい。 (2)原案に比べて圧倒的に短い。(uexpr の最初の方の、DIGIT の定義も いらなくなる。) (3)原案に比べて速い。 なお sra.test に関連する記事 が ありますので、暇な方はそちらもごらんください。 -- ----____----____ 渡邊克宏 環境開発部 今月の歌: 「♪ 僕等の名前を覚えて欲しい 大型機を知らない子供達さ ♪」