echo xx y11y rrr | awk '{ if ($2 ~/y[1-5]{2}y/) print $3}'
出力が得られないのはなぜですか?
ありがとうございました。
--posix
またはオプションのいずれかを指定して、正規表現マッチングで「間隔式」を有効にする必要があり--re-interval
ます。
例えば
echo xx y11y rrr | awk --re-interval '{ if ($2 ~ /y[1-5]{2}y/) print $3}
マニュアルページから:
--re-interval 正規表現マッチングで間隔式の使用を有効にします (以下の正規表現を参照してください)。インターバル式は、従来 AWK 言語では使用できませんでした。POSIX 標準では、awk と egrep を互いに一貫させるために、それらが追加されました。ただし、それらを使用すると古い AWK プログラムが壊れる可能性が高いため、このオプションで要求された場合、または --posix が指定された場合にのみ、gawk はそれらを提供します。
awk で POSIX に {} の使用を強制する必要があります
echo xx y11y rrr | awk -W posix '{ if ($2 ~/y[1-5]{2}y/) print $3}'