はじめに
こんにちは!今回はprintfコマンドについて解説します。
printfは、フォーマットを指定して出力するコマンドです。C言語のprintfと同じような機能を持っていて、めっちゃ便利ですよ。
echoよりも柔軟な出力ができるので、スクリプトやログ出力で活躍します。
printfコマンドとは
printfは、指定されたフォーマット文字列に従って、整形されたテキストを出力する組み込みコマンドです。
主な特徴:
- フォーマット指定 -
%d(整数)、%s(文字列)、%f(浮動小数点数)など - エスケープシーケンス対応 -
\n(改行)、\t(タブ)など - パディング・精度制御 - 桁数や小数点以下の桁数を指定可能
- 複数引数対応 - 複数の値を一度にフォーマット出力
echoと違って改行を自動で入れないので、より細かい制御ができます。
基本構文
|
|
フォーマット文字列に%で始まる形式指定子を含めます。
主なオプション
| フォーマット | 説明 |
|---|---|
%s |
文字列 |
%d |
整数(10進数) |
%x |
16進数(小文字) |
%X |
16進数(大文字) |
%f |
浮動小数点数 |
%e |
指数表記 |
%c |
1文字 |
%% |
リテラルな% |
パディング・精度:
| 形式 | 説明 |
|---|---|
%5s |
5文字分の幅で右寄せ |
%-5s |
5文字分の幅で左寄せ |
%05d |
5桁の整数(0パディング) |
%.2f |
小数点以下2桁 |
使用例
例1: 基本的な文字列出力
|
|
実行結果:
|
|
最もシンプルな使い方。\nで改行します。
例2: 複数の値をフォーマット出力
|
|
実行結果:
|
|
異なる型の値を同時に出力します。
例3: 浮動小数点数の精度指定
|
|
実行結果:
|
|
小数点以下2桁で表示します。
例4: 16進数への変換
|
|
実行結果:
|
|
同じ値を異なる進数で表示します。
例5: 0パディング(ゼロ埋め)
|
|
実行結果:
|
|
5桁になるようゼロで埋めます。ファイル名や連番に便利。
例6: 右寄せ・左寄せ
|
|
実行結果:
|
|
幅を指定して配置します。テーブル出力に便利。
例7: 複数行の出力
|
|
実行結果:
|
|
複数の\nで改行を制御します。
例8: 複数の引数で繰り返し出力
|
|
実行結果:
|
|
フォーマット文字列が複数の引数に対して繰り返し適用されます。
例9: タブでの整列
|
|
実行結果:
|
|
\tでタブを挿入。テーブルフォーマットに使えます。
例10: 変数を使った出力
|
|
実行結果:
|
|
シェル変数をprintfの引数として使えます。
Tips・注意点
echoとの違い
|
|
printfのほうがより細かい制御ができます。
%記号をそのまま出力したい
|
|
%%で1つの%を出力できます。
バッシュのprintf vs /usr/bin/printf
|
|
通常はシェル組み込みが優先されます。
実践的な使い方
ログファイルへのタイムスタンプ付き出力
|
|
タイムスタンプ付きでログを出力。
CSVフォーマット生成
|
|
CSV形式でデータを出力。
テーブル出力
|
|
カラム幅を指定してテーブルを作成。
バージョン番号のフォーマット
|
|
バージョン情報を統一的にフォーマット出力。
まとめ
printfコマンドのポイント:
- 整形して出力するコマンド
- %s: 文字列、%d: 整数、%f: 浮動小数点数
- パディング:
%5sで幅、%05dでゼロ埋め - 精度指定:
%.2fで小数点以下2桁 - 改行:
\nを明示的に指定(echoと違う) - よく使う組み合わせ:
printf "%s: %d\n",printf "%.2f\n"
echoより便利で、スクリプト内での出力をしっかり制御したい時に最適ですよ!