2010年9月30日木曜日

文字列中で使用出来る特殊文字 - AWK

AWKの文字列操作機能
AWKの正規表現
○(注記あり)Gawk on Windows ○(注記あり)Gawk ○(注記あり)mawk32 ○(注記あり)Mawk ○awk
AWKでは、文字列に含める事が難しい文字について、\ から始まる特殊文字の形で指定する事が出来ます。

o 使用例
--------
BEGIN {
  printf("ミクさん、\\はネギの印ではありませんよ、、、多分。\n");
}
--------


文字列中で使用出来る特殊文字
記号意味
\\\ 自身
\"" (= 二重引用符)自身
\n0x0a = 改行
\r0x0d = 復帰。Windows版では、バイナリモードの時の改行でお世話になります。
\t0x09 = タブ文字
\v0x0b = 水平タブ。普通は使いません。
\a0x07 = ベル(音が鳴ります)。普通は使いません。
\b0x08 = バックスペース。普通は使いません。
\f0x0c = 改ページ。普通は使いません。
\x12文字コードの16進数表現。コードが2桁に満たない時、前ゼロで埋めます。
\012文字コードの8進数表現。コードが3桁に満たない時、前ゼロで埋めます。
処理系に依存する特殊文字
\// 自身。正規表現以外の文字列に含める場合、処理系によって動作が異なります。
o オリジナルは常に変換します。
o mawkは変換しません。
o Gawkは警告が出ますが変換します。
\'' (= 一重の引用符)自身。処理系によって動作が異なります。
o オリジナルは常に変換します。
o mawkは正規表現の時だけ変換します。
o Gawkは文字列の時だけ、警告を出しながら変換します。


**** メモ
o \/ の規則については、オリジナルでの採用に対して他の2つの処理系が消極的な、珍しいケースになりました。
    + オリジナルは、正規表現と交互に入力する時に楽なように、\/ を常に / に変換します。
    + 一方、mawkやGawkは、非対応だったり、警告を出したりしています。他言語との互換性を重視しているみたいです。
o 8進数や16進数の使用例は、「AWKプログラムの中で、8進数や16進数を使う方法


**** 確認した処理系
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
    ▼制作メモ
    > ツール。文字列からアスキーコードを調べます(String to ASCII)
    length = 文字列や配列の長さを調べる
    index = 文字列の登場位置を調べる
    +
    AWKの正規表現で使う書式
    AWKプログラムの中で、8進数や16進数を使う方法
    sprintf = 文字列を組み立てる
    printf = 文字列を組み立ててファイルなどに書き出す
    print = ファイルなどに書き出す
(2010年10月1日追加。「'」(= 一重の引用符)も変換対象)