如何 grep 基于 '.' 的行(点)?

如何 grep 基于 '.' 的行(点)?

假设我有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
    

相关内容