grep 行为异常

grep 行为异常

grepa搜索信件时表现不同。当搜索条件中包含字母时a,它不会搜索任何其他字母。但其他角色的情况就不一样了。为什么?!

对于命令 : grep [aeiou] file1or grep [eioau] file1or grep [a,e,i,o,u] file1,它显示以下输出:

Name : file1 
a

注1:字母“a”在输出中突出显示为搜索字符(附有屏幕截图)。

对于命令 : grep [eiou] file1or grep [e,i,o,u] file1,它显示以下输出:

this is test file.
Name : file1

笔记2:字母“e”和“i”在输出中突出显示为搜索字符(附有屏幕截图)。

文件1是:

this is test file.
Name : file1
a

截屏

答案1

a您的当前目录中有一个名为的文件。您还没有引用传递给 的 RE grep,所以这就是发生的情况:

给定

grep [aeiou] file1

shell 看到[aeiou]并且因为它是一个有效的(glob)模式,所以它尝试将其与单个字母文件a, e, i, o,进行匹配u。由于成功,它会将参数替换为匹配的文件,a.然后将整个结果作为命令执行:

grep a file1

这将为您提供您所看到的输出。我应该指出,如果 shell 无法匹配您的模式,它会保持不变。这使得[eiou]在明显[aeiou]“失败”的地方取得成功。

解决方案是单引号非文件参数,如下所示:

grep '[aeiou]' file1

相关内容