我正在尝试使用命令搜索字符串0.49(带点)
grep -r "0.49" *
但发生的事情是,我也得到了不需要的结果,其中包含字符串,如0449,0949等。问题是linux将点(.)视为任何字符,并显示所有结果。但我只想得到“0.49”的结果。
我正在尝试使用命令搜索字符串0.49(带点)
grep -r "0.49" *
但发生的事情是,我也得到了不需要的结果,其中包含字符串,如0449,0949等。问题是linux将点(.)视为任何字符,并显示所有结果。但我只想得到“0.49”的结果。
Grep使用正则表达式;. 表示正则表达式中的“任何字符”。如果你想要一个文字字符串,使用grep -F, fgrep,或转义。\。
别忘了用双引号把字符串括起来。或者你应该用\\。
所以,你的命令需要是:
grep -r "0\.49" *
or
grep -r 0\\.49 *
or
grep -Fr 0.49 *
这里有很多建议用\来转义点的答案。但我一次又一次地遇到这个问题:\。得到的结果和。
然而,这两个表达对我来说很有用:
$ grep -r 0\\.49 *
And:
$ grep -r 0[.]49 *
我在Ubuntu和Archlinux上使用“正常”bash shell。
编辑,或根据评论:
$ grep -r '0\.49' *
注意,单引号在这里起作用。