使用grep搜索其中包含点的字符串

时间:2012-04-27 07:51:04

标签: linux grep

我正在尝试使用命令

搜索字符串0.49(带点)
grep -r "0.49" *

但发生的事情是,我也收到了不需要的结果,其中包含04490949等字符串。事情是linux,考虑点(。)作为任何字符,并带出所有结果。但我想得到的结果仅为“0.49”。

9 个答案:

答案 0 :(得分:185)

grep使用正则表达式; .表示正则表达式中的“任何字符”。如果您需要文字字符串,请使用grep -Ffgrep或将.转义为\.

不要忘记用双引号括起你的字符串。否则你应该使用\\.

答案 1 :(得分:33)

grep -F -r '0.49' *将0.49视为“固定”字符串而不是正则表达式。这使得.失去了它的特殊含义。

答案 2 :(得分:19)

您需要将.转义为"0\.49"

.是一个正则表达式元字符,用于匹配任何字符(换行符除外)。要匹配文字句号,您需要将其转义。

答案 3 :(得分:6)

逃避.

grep -r "0\.49"

答案 4 :(得分:4)

您可以使用\

转义点和其他特殊字符

例如。 grep -r“0 \ .49”

答案 5 :(得分:4)

您还可以使用" [。]"

grep -r "0[.]49"

答案 6 :(得分:3)

逃脱点。示例命令将是。

grep '0\.00'

答案 7 :(得分:3)

这里有很多答案建议用\.来逃避点,但我一遍又一遍地遇到这个问题:\.给我的结果与. <相同/ p>

然而,这两个表达对我有用:

$ grep -r 0\\.49 *

$ grep -r 0[.]49 *

我在Ubuntu和Archlinux上使用“普通”bash shell。

答案 8 :(得分:0)

您还可以使用-选项进行搜索,该选项基本上会忽略所有特殊字符,并且不会由grep解释。

$ cat foo |grep -- "0\.49"