grep
a
搜索信件时表现不同。当搜索条件中包含字母时a
,它不会搜索任何其他字母。但其他角色的情况就不一样了。为什么?!
对于命令 : grep [aeiou] file1
or grep [eioau] file1
or grep [a,e,i,o,u] file1
,它显示以下输出:
Name : file1
a
注1:字母“a”在输出中突出显示为搜索字符(附有屏幕截图)。
对于命令 : grep [eiou] file1
or 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