2010年4月20日火曜日

文字列を組み立てる方法 - AWK

AWKの文字列操作関数と関連機能
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日追加。単純に文字を並べる場合)