grep没有找到“。*”字符串值

时间:2014-02-20 15:10:23

标签: bash shell unix grep

我的文件 temp.txt 如下所示。

a.*,super

我想grep .*检查文件中是否存在该值。

使用的命令:

grep -i ".*" temp.txt

不返回任何内容

3 个答案:

答案 0 :(得分:5)

这是因为grep将模式视为正则表达式。

要使grep将其解释为文字,请使用-F

grep -F ".*" temp.txt

另外,不需要注意-i,因为没有任何区别要考虑(例如我们使用它来使grep返回ABaB,{{1在执行Ab时)和ab


正如grep -i "ab"所说:

  

-F, - 固定字符串

     

将PATTERN解释为固定字符串列表,以换行符分隔,   其中任何一个都要匹配。 (-F由POSIX指定。)

     

-i, - ignore-case

     

忽略PATTERN和输入文件中的大小写区别。 (-一世   由POSIX指定。)

答案 1 :(得分:2)

使用awk

awk '/\.\*/' file

或fgrep

fgrep ".*" file

答案 2 :(得分:1)

.*在正则表达式中都有特殊含义。逃避它们直接匹配。

$ cat temp.txt
a.*,super
$ grep "\.\*" temp.txt
a.*,super
$ echo $?
0


$ grep "there-is-no-such-string" temp.txt
$ echo $?
1

-i不需要,因为正则表达式中没有字母。