ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Bashでもprintfが使える

(2023-08-22 初稿)

恥ずかしながら、つい最近までbashでprintfが使えることを知らなかった。

これまで、echoで一生懸命整形したり加工したりして出力してたこと。^^;

さて、printfの使い方は、man 3 printf等を見て欲しいが、echoと違ってとても高機能。

いくつかサンプルを示すので、皆さんの参考になれば。

文字と数字の出力

文字列の出力(%s)

$ printf '%-10s\n' abcde     # 左寄せ
abcde_____                   # 10文字幅の左寄せ
$ printf '%10s\n' abcde      # 右寄せ
_____abcde                   # 10文字の幅の右寄せ

数字の出力(%d)

$ printf '%3d\n' 5           # 3桁の数字
__5
$ printf '%03d\n' 5          #ゼロパッディング
005
$ printf "%'d\n" 123456789   #アポストロフィでカンマ
123,456,789

整形した文字列を変数に

上記のように整形や加工した文字列を変数に入力するのは以下のとおり。C言語でのsprintfみたいね。

$ printf -v var "%03d = %s\n" 5 ひゃまだ
$ echo $var
005 = ひゃまだ

引数の数だけ繰り返し整形して出力

Bashのprintfでは、引数の数だけ繰り返して出力する。

これは、初めて知ったけど複雑な処理も簡潔に書けそうだね。

$ printf "value: %s\n" a b c
value: a
value: b
value: c
$ printf "value: %03d\n" {0..2}
value: 000
value: 001
value: 002

printfは便利なので、皆さんも使ってみてね。

関連ページ