awkコマンドがあれば
pattern { ... }
パターンがキャプチャ グループを使用する場合、ブロック内でキャプチャされた文字列にアクセスするにはどうすればよいでしょうか?
ベストアンサー1
gawk では、match
関数を使用して括弧で囲まれたグループをキャプチャできます。
gawk 'match($0, pattern, ary) {print ary[1]}'
例:
echo "abcdef" | gawk 'match($0, /b(.*)e/, a) {print a[1]}'
出力しますcd
。
問題の機能を実装する gawk の具体的な使用法に注意してください。
ポータブルな代替手段として、 および を使用して同様の結果を得ることができmatch()
ますsubstr
。
例:
echo "abcdef" | awk 'match($0, /b[^e]*/) {print substr($0, RSTART+1, RLENGTH-1)}'
出力しますcd
。