2010年11月1日

串刺しナンバリング:冗談なれど、王立協会は些かも疎かにせず

ワンライナー、私にも書けました!
MacOSXの道具箱(/usr/bin/)にひっそり隠れていたものたち。
ひとつひとつはちっちゃいけれど、力をあわせりゃ、このとおり。

No.1からNo.500までを串刺し8面付にするための連番を生成します。

jot - 1 500 1 | rs -t 0 8 | sed -e 's/ $/b/' | rs 0 1 | sed -e 's/b//' > num.txt


連番の個数がシート数の整数倍でなくて半端がでる場合、最後の何枚かのシートに連番が入らない欄が一つずつできます。そこのところの処理、ちょっと工夫しました。

  • jotで縦1列にならんだ連番を作ります。
  • 1回目のrsで面付された状態と同じように8列に連番が並びます。
  • 500より大きなところは空欄になってます。その行末の直前の空白は、ほんとは列のセパレータのはずですが、それと行末をセットにしてsedでマーク(b)を付けるのです。
  • 2回目のrsで縦1列にならびかえ。
  • 最後にsedでマークを外して、できあがり!


今回登場してくれたのは次のみなさん。sedさんには普段からいろいろお世話になってますけど、jotさんは、やもさんに教えてもらうまで知りませんでした。rsさんは、jotさんのmanpageで見つけました。これからもよろしく ^_^

jot -- print sequential or random data
rs -- reshape a data array
sed -- stream editor

1 件のコメント:

Lamium さんのコメント...

one-liner:⦅米国用法⦆短い気のきいた冗談.
not a jot:⦅英古風⦆全然…(し)ない, 少しも…(し)ない.
RS:⦅英国用法⦆Royal Society.
sed:⦅ラテン語⦆but, but also / yet / however, but in fact/truth / not to mention / yes but.