【发布时间】:2012-10-19 18:54:45
【问题描述】:
受 this 问题的启发,谁能解释以下行为?
$ 回声“-uus” | grep -wo '[0]*' && echo 匹配 -uus 匹配的 $ 回声“-uus” | grep -o '[0]*' && 回显匹配 匹配的 $ grep --version | sed 1q grep (GNU grep) 2.5.1特别是,为什么第二个 grep 成功了,但是没有输出?为什么第一个命令有两行输出?输出的第二行我能看懂,但第一行看不懂。
【问题讨论】:
-
在这两种情况下我都只得到
matched。 sprunge.us/RTfM -
你确定你没有创建一个名为
grep的别名或shell 函数(大概调用真正的grep)?你的环境中有GREP_OPTIONS吗? -
我可以在几个 shell 下重现 OP 的输出,即 OS X 上的 grep 2.5.1(没有定义 GREP_OPTIONS。)
-
这发生在 OS X (10.8.0) 上,grep 是 /usr/bin/grep,未定义 GREP_OPTIONS。我无法理解操作系统的重要性。
-
@WilliamPursell:是的,这是我多年前发现的错误。较新版本的 grep 不应出现此类行为。