awk 在桌面和服务器上的工作方式不同

awk 在桌面和服务器上的工作方式不同

这只是一个简单的问题。

为什么这个 bash 命令在 Ubuntu Server 上可以正常工作并找出 ISBN 代码,但在我的 Ubuntu Desktop 上却不起作用?两个系统都是 22.04 LTS。

echo "ISBN 5-02-013850-9" | awk '/ISBN [0-9]{1}-[0-9]{2}-[0-9]{6}-[Xx0-9]{1}/ {print $0}'

提前致谢。

答案1

可能其中一个正在使用gawk(GNU awk),而另一个正在使用mawk,它似乎不支持 RE 括号量词。请使用 进行检查awk -W version

mawk似乎是awkUbuntu 22.04 中的默认设置,但如果您随后安装,gawk它将通过update-alternatives机制优先考虑。

内置正则表达式不支持括号表达式

顺便说一句,[Xx|0-9]应该是[Xx0-9](除非您尝试匹配文字|)。

相关内容