Home > プログラミング > AWK - match と substr

AWK - match と substr

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 を呼ぶようにしている.

★下記に2つの英単語をスペースで区切って入力してください

Home > プログラミング > AWK - match と substr

Search
Feeds

Page Top