假设我有file
以下内容:
123
251
7.8
951
现在我想要我尝试过的grep
行.
:
$ cat file | grep .
123
251
7.8
951
$ cat file | grep '.'
123
251
7.8
951
但它没有按预期工作。那么,我如何grep
基于 进行字符串化.
?
附加信息:
$ grep --version | line
grep (GNU grep) 2.16
答案1
你得到的结果是因为.
匹配任何单个字符
从联机帮助页>正则表达式:
基本构建块是匹配单个字符的正则表达式。大多数字符(包括所有字母和数字)都是与自身匹配的正则表达式。 任何具有特殊含义的元字符都可以通过在其前面加上反斜杠来引用。
时期 。匹配任何单个字符。
所以,
.
需要转义\
$ cat file | grep '\.' 7.8
注意这里
\.
应该用 引号引起来'
。另一种方法是使用
-F, --fixed-strings
选项 与grep
或 使用fgrep
.-F, --fixed-strings Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.
例子:
$ cat file | grep -F . 7.8
$ cat file | fgrep . 7.8
[
另一个解决方法是使用方括号表达式,将要在and内匹配的字符串括起来]
:$ cat file | grep '[.]' 7.8