2011年8月10日水曜日

正規表現で出来る事 - AWK

AWKの正規表現
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
正規表現を使うと、文字列の複雑な比較をする事が出来ます。
また、AWKの関数と組み合わせると、文字列の一部を置き換える事も出来ます。


**** 正規表現で出来る事
o 条件に一致する行を取り出す事が出来ます。
--------
/ミク/ {
  print "ミクさん発見 = " $0;
}
--------

    + 最後のセミコロンは付けなくても大丈夫です。(C言語の書き方に合わせました。)
    + また、1行で書く事も出来ます。

o 文字列と比較する事が出来ます。
--------
{
  if ($0 ~/ネギ/) {
    print "ミクさんへのお土産発見 = " $0;
  }
}
--------


o 関数を併用すると、文字列の一部を置き換える事も出来ます。
--------
{
  gsub(/ミクちゃん|ミク様/, "ミクさん"); # 文章中の敬称を「ミクさん」に統一します。
  print $0;
}
--------



**** メモ
o 上記のAWKプログラムは、もっと短く書く事も出来ます。
o 例えば、最後の例は、次のように書く事も出来ます。
--------
gsub(/ミクちゃん|ミク様/, "ミクさん") || 1
--------

    + 最後の「 || 1」の意味は「 or 1」(= 常に真)
    + 短くても動く理由は、「AWKで最も短いプログラム


**** 確認した処理系
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の正規表現
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKの正規表現で使う書式
    正規表現を書く事が出来る場所
    文字列中で使用出来る特殊文字