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