sprintf = 文字列を組み立てる - AWK
○Gawk on Windows ○Gawk ○mawk32 ○Mawk △(全角不可)awk
文字列を組み立てます。o 単純に結合したいだけでしたら、変数や定数の間に1つ空白を入れて、並べる方法もあります。
+ 詳しくは、「文字列を組み立てる方法」
**** 書式
--------
sprintf(書式文字列 [, 値1 [, 値2 ... ]])
--------
o 書式文字列 -- 文字列の形で指定します。詳細はこちら
o 値1, 値2 ... -- 埋め込む値。変数や計算式なども指定出来ます。
o 戻り値 -- 組み立てた文字列
**** 使用例
--------
BEGIN {
v = sprintf("こんにちは。ミクさん");
print v;
v_name = "ミクさん";
v = sprintf("こんにちは。%s", v_name);
print v;
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o 指定した書式に合わせて、文字列を組み立てます。
o 書式文字列の書き方は、この下にあります。C言語のsprintfと、ほぼ同じです。
o 単純に文字列として並べたいだけでしたら、変数などをそのまま並べる方が簡単です。
--------
n = 39;
v = "ミクさん。" n "さん。";
--------
** 書式文字列の書き方
o 普通の文字列に、%から始まる書式を埋め込みます。
--------
%[オプション][最低表示幅][.表示桁数][表示に使う型]
--------
o オプション -- 右寄せなどを指定出来ます。詳細は、一番下の表の通りです。
o 最低表示幅 -- 表示する文字が少なくても一定の幅を取りたい時に、使用します。
o .表示桁数 -- 小数の形で記載します。表示する型によって意味が異なります。
+ 整数の時は、最低表示桁数です。数値が小さい時は、左側に0を埋めます。
+ %g, %Gの時は、有効数字です。
+ 上記以外の数値の時は、小数点以下の桁数です。
+ %s = 文字列の時は、最大表示桁数です。
+ %cの時は、指定しても意味がありません。
o 表示に使う型 -- 下の表の通りです。良く使う書式は、整数の %d, 文字列の %s, 実数の %g。
o 最低表示幅や表示桁数は、変数の形で指定する事も出来ます。「*」を使います。
--------
n = 4;
v = sprintf("%*d", n, 393); # 結果は「 393」
--------
+ 但し、古い処理系などでも動かす場合は、文字の連結を使う方が確実みたいです。
--------
n = 4;
v = sprintf("%" n "d", 393); # 結果は「 393」
--------
名前 | Gawk on Windows 3.1.7 | Gawk for Windows 3.1.6 | mawk32 1.3.3 | Mawk for Windows 1.3.3 | awk (May 1, 2007) | 説明 |
---|---|---|---|---|---|---|
表示に使う型 | ||||||
%c | ○ | ○ | ○ | ○ | ○ | 文字列先頭の1バイトを表示。もしくは数値 (アスキーコード)を指定(0-255) (他のOSでも動かす時は、半角文字のみがおすすめ。0-127) |
%d %i | ○ | ○ | ○ | ○ | ○ | 整数として表示 |
%e %E | ○ | ○ (指数部2桁) | ○ | ○ | ○ | 数値表示。浮動小数点表記 1.234567e+003 %eは小文字、%Eは大文字で表記 |
%f %F | ○ | ○ | △ (%F不可) | △ (%F不可) | △ (%F不可) | 数値表示。固定小数点表記 123.456700 %fは小文字、%Fは大文字で表記 |
%g %G | ○ | ○ | ○ | ○ | ○ | 数値表示。浮動小数点表記と固定小数点表記の内、どちらか短い方 %gは小文字、%Gは大文字で表記 |
%o | ○ | ○ (8バイト長) | ○ | ○ | ○ | 正の整数として表示。8進数表記 (符号なし) |
%s | ○ | ○ | ○ | ○ | ○ | 文字列を表示 |
%u | ○ | ○ (8バイト長) | ○ | ○ | ○ | 正の整数として表示。10進数表記 (符号なし) |
%x %X | ○ | ○ (8バイト長) | ○ | ○ | ○ | 正の整数として表示。16進数表記 (符号なし) %xは小文字、%Xは大文字で表記 |
%% | ○ | ○ | ○ | ○ | ○ | %自身 |
良く使う特殊文字 | ||||||
\t | ○ | ○ | ○ | ○ | ○ | タブ文字 |
\n | ○ | ○ | ○ | ○ | ○ | 改行文字 |
\\ | ○ | ○ | ○ | ○ | ○ | \自身 |
** オプションの種類
名前 | 意味 |
- | 最低表示幅を指定した時に、左詰めにします。この指定が無い時は、右詰めです。 v = sprintf("%-10s", "mikusan"); # 結果は「mikusan 」 |
0 | 最低表示幅を指定した時に、値の左側に空いている場所があれば、0 で埋めます。 v = sprintf("%04d", 393); # 結果は「0393」 |
+ | 数値の時に、値の左側に符号を付けます。値が0以上の時に + / 負の時に - v = sprintf("%+d", 393); # 結果は「+393」 |
「 」(= 半角空白) | 値の先頭に「-」(マイナス記号)が付かない時は、半角空白を1文字入れます。 値が文字列の時も、先頭に半角空白を入れます。 v = sprintf("% d", 393); # 結果は「 393」 |
# | 8進数(%o)に指定すると、値の先頭に「0」を付けます。 16進数(%xや%X)に指定すると、値の先頭に「0x」や「0X」を付けます。 v = sprintf("%#x", 393); # 結果は「0x189」 |
'(= 一重の引用符) | (Gawk on Windows 3.1.7専用)日本の場合、整数を指定した時に限り風に金額表示します。 Gawkのユーザーズガイドによると、地域によって表記が変わるみたいです v = sprintf("%'d", 123456789); #結果は「123,456,789」 |
N$ | (Gawk専用)N番目に指定した変数を表示します。 v = sprintf("%2$s%1$s", "さん", "ミク"); #結果は「ミクさん」 |
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007) -- 全角不可。処理系が非対応
==
関連ページ:
▼AWKの文字列操作関数と関連機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> gsub = 文字列を置き換える
sub = 文字列を、最初の1つだけ置き換える
gensub = n番目に見つかった文字列を置き換える
+
文字列を組み立てる
文字列中で使用出来る特殊文字
AWKでバイナリ出力する方法(mawk, Gawk専用)
printf = 文字列を組み立ててファイルなどに書き出す
strftime = 時刻を文字列に変換する
(2010年9月14日追加。書式のオプション)