😺

【Bash】seq -fで出力フォーマットを指定する

2023/07/26に公開

やりたいこと

このように出力させたい。

user1
user2
user3
user4
user5
user6
user7
user8
user9
user10

環境

$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)

forを使う

forで1から10をこのように回せばできます。

$ for i in $(seq 10); do echo "user$i"; done
user1
user2
user3
user4
user5
user6
user7
user8
user9
user10

seq -fでも可能

本題です。
seqコマンドでも-fオプションを使うことで同じことができます。

$ seq -f 'user%g' 1 10
user1
user2
user3
user4
user5
user6
user7
user8
user9
user10

シンプルになりました。

-f(--format)オプション

seqコマンドは-fオプションを使うことでフォーマット指定子を使用できます。
フォーマット指定子とは、出力したいデータの形式を指定するための記号です。

man seqによると、C言語のprintf由来らしいです。
そのためprintfのドキュメントを見ると詳細がわかるはずです。

例えばこちらのサイトではフォーマット指定子をまとめてくれています。
https://www.k-cube.co.jp/wakaba/server/format.html#:~:text=フォーマット指定子とは,の記述子である。

%gは?

今回使用したものです。
浮動小数点数または指数表現を出力します(値に応じて適切な形式が選ばれます)。

参考

man seq
https://orebibou.com/ja/home/201709/20170912_001/
https://blog.n-t.jp/post/tech/seq-format-option/

Discussion