我的文件 temp.txt 如下所示。
a.*,super
我想grep .*
检查文件中是否存在该值。
使用的命令:
grep -i ".*" temp.txt
不返回任何内容
答案 0 :(得分:5)
这是因为grep
将模式视为正则表达式。
要使grep
将其解释为文字,请使用-F
。
grep -F ".*" temp.txt
另外,不需要注意-i
,因为没有任何区别要考虑(例如我们使用它来使grep返回AB
,aB
,{{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
不需要,因为正则表达式中没有字母。