awk 文字クラスの謎

awk 文字クラスの謎

文字クラスが利用できないようです。アッ説明とほぼ同じ正規表現ここ:

user@host:~$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan

compiled limits:
max NF             32767
sprintf buffer      2040
user@host:~$ echo "host.company.com has address 192.168.22.82" |awk '/^[a-zA-Z0-9.-]+ has address/ { print $4 }'
192.168.22.82
user@host:~$ echo "host.company.com has address 192.168.22.82" |awk '/^[[:alnum:].-]+ has address/ { print $4 }'
user@host:~$

2番目のコマンドがアドレスフィールドを見つけることができない理由を知っている人はいますか?

ベストアンサー1

これはバグmawk 1.3.3であり、報告されました。ここ。アップグレードmawk 1.3.4またはパッチを使用してこのエラーを解決できます。

$ mawk -W version
mawk 1.3.4 20130219
Copyright 2013, Thomas E. Dickey
Copyright 1996, Michael D. Brennan

internal regex
compiled limits:
max NF             32767
sprintf buffer      2040

$ echo "host.company.com has address 192.168.22.82" | mawk '/^[[:alnum:].-]+ has address/ { print $4 }'
192.168.22.82

mawk同様に、拡張正規表現が使用されるため、egrepPOSIX文字クラスをサポートする必要があります。

おすすめ記事