5
 echo xx y11y rrr | awk '{ if ($2 ~/y[1-5]{2}y/) print $3}'

出力が得られないのはなぜですか?

ありがとうございました。

4

3 に答える 3

10

--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 はそれらを提供します。

于 2011-12-01T14:46:08.933 に答える
0

awk で POSIX に {} の使用を強制する必要があります

echo xx y11y rrr | awk -W posix '{ if ($2 ~/y[1-5]{2}y/) print $3}'
于 2011-12-01T14:45:26.533 に答える