seqコマンドにフォーマット指定子が使えた件

暇な時に man seq したらシェル芸で使えそうなオプションを発見。

SEQ(1)                         ユーザーコマンド                         SEQ(1)

名前
       seq - 数字の列を表示する

書式
       seq [OPTION]... LAST
       seq [OPTION]... FIRST LAST
       seq [OPTION]... FIRST INCREMENT LAST

説明
       FIRST から LAST までの数字を INCREMENT 間隔で表示します。

       長いオプションで必須となっている引数は短いオプションでも必須です。

       -f, --format=FORMAT
              printf 形式の FORMAT で浮動小数点を表示する

浮動小数点数形式でのみフォーマット指定子が使えるらしい。早速やってみた。

$ seq -f "羊が%f匹" 5
羊が1.000000匹
羊が2.000000匹
羊が3.000000匹
羊が4.000000匹
羊が5.000000匹

おお、たしかに。ただ羊は自然数匹しか存在し得ないためこれは微妙。しかしこれは工夫すればいいですね。

$ seq -f "羊が%.0f匹" 5
羊が1匹
羊が2匹
羊が3匹
羊が4匹
羊が5匹

小数点以下を0桁表示で実質 %d できました。これまでだと

$ seq 5 | xargs -n1 printf ' 羊が%d匹\n'
羊が1匹
羊が2匹
羊が3匹
羊が4匹
羊が5匹

とやっていたので短さ・読みやすさともに抜群です。