- 2005-02-16 (Wed) 03:38
- プログラミング ( sed/wake/awk )
AWK 使いはじめて一時間ほどはまっていたのが,直前の正規表現でマッチした部分の取り出し方だった.ruby やら perl やらではそれらは簡単にできるのだが(特別な変数に入る),awk はそこまではできないらしい.結局 awk で正規表現でマッチした部分を取り出すには,match と substr あたりを使う必要があるとの結論に達した.
例えば, hh:mm 見たいな時間の表示を取り出すには
pos=match($0, /[0-9][0-9]:[0-9][0-9]/) if(!pos) next timestr = substr($0, pos, RLENGTH)
などのようにする.
match で正規表現をマッチさせて,返り値でその開始位置を取得し(RSTART変数にも入る),長さが RLENGTH に入っているのでその分を substr で取り出すという手順になる.マッチに失敗したときは 0 が帰るらしい.コード中ではマッチしなかった場合に next を呼ぶようにしている.
- Newer: AWK - はじめ