通过阅读这个问题,我发现 GNUgrep
有一个-X
需要参数的选项。奇怪的是,手册页和信息页中都没有提到它。
/* -X is deliberately undocumented. */
Run Code Online (Sandbox Code Playgroud)
进一步看,似乎该-X matcher
选项设置用于正则表达式引擎,matcher
是一个 grep
,egrep
,fgrep
,awk
,gawk
,posixawk
和perl
(截至2.25版本)。
一些这些值是严格相同的现有选项(即grep -G
,grep -E
,grep -F
和grep -P
)。另一方面,这三个awk
变体没有相应的选项。
有人知道这个选项的实际目的是什么,尤其是使用正则awk
表达式引擎之一?有人能告诉我为什么故意没有记录吗?
Ste*_*itt 69
它的目的是以grep
一种或另一种形式提供对在 GNU中实现的各种匹配器的访问,特别是在其他情况下不可用的 AWK 匹配器,可能用于测试目的(请参阅讨论添加和匹配器的错误 16481)。gawk
posixawk
然而,它目前有问题,这就是它被记录为未记录的原因:
2005 年 1 月 27 日星期四下午 04:06:04 -0500,Charles Levert 写道:
> '-X' 选项,特别是它与“awk”匹配器的使用
> (“-X awk”) 没有记录。请让它无证。
除了 -X awk 之外,它不提供任何新功能。
我认为 awk regexps 的实现并不完美。
新的 GNU 正则表达式包含一些设置 AWK 样式语法的方法,是的。然而 gawk 并不直接使用它:它首先解析正则表达式。
特别是,awk 正则表达式允许转义序列 \NNN,其中 NNN 是一个八进制值。所以 /\040/ 数学空间。grep -X awk 似乎不支持这一点。
恐怕 regex.c 不支持这些转义序列。
在我们决定记录(并因此支持)此功能之前,我们必须确保正则表达式与 awk 正则表达式完全兼容。
我认为这不值得麻烦。
斯捷潘
一个后续要求注释添加,并且提供对多一点背景-X
选项:
我自己的倾向是建议完全删除 -X。我怀疑它是由原作者添加的,主要是为了测试目的。如果它要留在,至少添加这样的评论。
Run Code Online (Sandbox Code Playgroud)/* -X is undocumented on purpose. */
以避免将来讨论已解决的问题。
阿诺德