grep初始空间

时间:2012-11-02 15:48:32

标签: linux bash grep

man bash | grep "\-d"

很多结果

man bash | grep " \-d"

没有结果

这里发生了什么?

3 个答案:

答案 0 :(得分:4)

它实际上就是它的样子。没有空格,所以grep找不到任何空格。如果检查man bash的实际输出:

man bash > data

然后看看data你会看到在屏幕上呈现为空格的内容实际上是一个转义序列。屏幕上看起来像这样:

May also be specified as -d.

实际上是这样的:

May also be specified as ^[[1m-d^[[22m.

您的终端解释这些就好了。 grep没有。

答案 1 :(得分:0)

您是否从可能有标签或非ascii空间的地方剪切并粘贴了" \-d"?以下所有工作都可以在我的Ubuntu 12 Linux 3.2.0-32系统上运行,其中第一个"之后的空白是ascii空间。

man bash | grep  " \-d"
man bash | grep  " -d"
man bash | grep -- "-d"
man bash | grep -- " -d"
man bash | grep -- "-d" |wc
man bash | grep -- " -d" |wc

后两者分别形成输出43 300 261112 118 855。标记为结尾的--对于第四和第六项不是必需的,其中模式以空格而不是破折号开始。

答案 2 :(得分:0)

  男人bash | grep“-d”

如果您正在搜索字符串“-d”

它给了我回复

但在

  男人bash | grep“-d”

您正在搜索字符串“-d”(注意-d之前的空格)。 可能是'man bash'没有这样的字符串

但它给了我回应 (我无法发布截图)