在 Ubuntu 1604 上运行 mawk 时遇到问题:
echo "123-456" | mawk '$0~/^[0-9]{3}/ {print $0}'
尽管常规模式实际上匹配,但上面的命令什么也没输出。
然后我尝试使用相同的常规模式运行 egrep:
echo "123-456" | egrep '^[0-9]{3}'
它工作正常!
然后我查阅了 mawk 的文档,似乎根本原因是“传统上,间隔表达式在 awk 中不可用。”。常规模式中的字段“{3}”会导致问题。如果我使用 "[0-9][0-9][0-9]" 而不是 "[0-9]{3}": ,它可以正常工作。
https://invisible-island.net/mawk/manpage/mawk.html
https://www.math.utah.edu/docs/info/gawk_5.html
我为mawk尝试了选项--posix' and
--re-interval',它们两者都不起作用。
是否有可能在 mawk 中启用“间隔表达式”?我的操作系统是“Ubuntu 16.04.4”,mawk 是“1.3.3-17ubuntu2”。
谢谢。