(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は便利なので、皆さんも使ってみてね。