'.'ライン(ドット)に基づいて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
    
  • [別の回避策は、角かっこ式を使用して一致させる文字列を中に囲むことです]

    $ cat file | grep '[.]'
    7.8
    

関連情報