【发布时间】:2016-06-01 03:51:31
【问题描述】:
为什么这个“awk”命令什么也没产生?
echo 'hello world' | awk '/hello\s/ {print $0}'
我想模式 /hello\s/ 应该匹配任何有 'hello' 后跟空格的行,对吗?
关于信息,我在 Mac OS 中使用 awk。 awk 版本是 20070501。
【问题讨论】:
-
我这里什么也没产生(GNU awk)。您是否使用了无法识别
\s的 awk,例如 mawk? -
\s是(我认为)由 perl 发明的。您的 awk 使用此处定义的正则表达式:developer.apple.com/library/mac/documentation/Darwin/Reference/… -
Mawk 是“Mike 的 awk”。不确定 BSD awk,但看起来
\s是 GNUism。 -
@zell,正则表达式引擎有很多不同的实现。几乎每种编程语言都编写自己的。它们大部分相同,但也有区别。如果您在工具 X 中使用正则表达式,您确实需要查阅 X 的文档
-
@BenjaminW.,我在 re_format 手册页中看到有“增强的”正则表达式,其中包括通常的快捷方式转义,但该工具必须将其作为编译时选项包含在内,并且您希望该工具的文档说明使用增强的正则表达式