znl*_*lyj 3 regex shell awk gawk
echo xx y11y rrr | awk '{ if ($2 ~/y[1-5]{2}y/) print $3}'
Run Code Online (Sandbox Code Playgroud)
为什么我无法获得任何输出?
谢谢.
您需要通过指定--posix或--re-interval选项在正则表达式匹配中启用"区间表达式" .
例如
echo xx y11y rrr | awk --re-interval '{ if ($2 ~ /y[1-5]{2}y/) print $3}
Run Code Online (Sandbox Code Playgroud)
从手册页:
--re-interval在正则表达式匹配中启用区间表达式(请参阅下面的正则表达式).AWK语言中传统上不提供区间表达式.POSIX标准添加了它们,使awk和egrep相互一致.但是,它们的使用可能会破坏旧的AWK程序,因此如果使用此选项请求它们,或者指定了--posix,则gawk仅提供它们.