文字列を組み立てる方法 - AWK
文字列を組み立てる時は、変数などをそのまま並べる方法が簡単です。書式付きで組み立てたい時は、sprintfを使う方法が簡単です。
# 特に、Gawk on Windows 3.1.7の場合、変数をそのまま並べた方が、速いです。
# 詳しくは、下のメモ欄をどうぞ。
#
**** 例1。並べて書く場合の書き方
--------
{
v = "1番目の文字は「" $1 "」です。";
print v;
v = "2番目と3番目の文字は「" $2 "」と「" $3 "」です。";
print v;
# print文で直接書く事も出来ます。
# print "2番目と3番目の文字は「" $2 "」と「" $3 "」です。";
}
--------
**** 例2。sprintf関数を使った場合の書き方
--------
{
v = sprintf("1番目の文字は「%s」です。", $1);
print v;
v = sprintf("2番目と3番目の文字は「%s」と「%s」です。", $2, $3);
print v;
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** メモ
o sprintfの書式について。%sの他に、%dなどもあります。
o 書式はC言語のsprintfと同じに見えますが、若干、出来る事が少ないみたいです。試しながら使います。
+ %s = 文字列として扱います。
+ %d = 整数として扱います。
o 実行速度について
+ Gawk on Windows(3.1.7) で比較した時、そのまま並べる方が 9倍程度高速でした。
+ というよりも、sprintfが 9倍程度遅いといった方が正しいかもしれません。
+ 反対に、mawk MBCS (32bit版)(1.3.3) で比較した時は、sprintfの方がわずかに速かったです。
+ (性能調査結果はこちら)
==
関連ページ:
▼AWKの文字列操作関数と関連機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> 文字列から文字を1つずつ取り出す
文字列中で使用出来る特殊文字
> プログラムの基本パターン
ローカル変数を使う
(2010年8月16日追加。print文で直接書く事も可能)
(2010年8月9日変更。おすすめ手順を上に移動)
(2010年4月28日追加。単純に文字を並べる場合)