\バックスラッシュ文字とgrepの。

\バックスラッシュ文字とgrepの。

grepのバックスラッシュ文字\と一重引用符が混乱しています。私の理解では、文字通りの意味を維持します。例えば

私はこうすればecho 'This is \.私に与えるでしょうThis is \.

ただし、実際の.(ピリオド)と一致させるには、「\.」という特別な意味を使用する必要があります。正規表現で。たとえば、次からインポートしたデモ.txtファイルがある場合このサイトの例

問題の出力

私の質問は、この場合、 " "はgrepの文字通りの値をどのように保存しないのですか?これは私にとって非常に混乱していることが判明しました。どんな説明でもとても役に立ちます。

答え1

一重引用符は、文字が解釈されないように保護します。シェルただし、grepまだパラメータを正規表現として扱います。

-Fまたは、オプションを使用してgrepを実行してこの動作をオフにすることもできます--fixed-strings

grep -F 'purchase.' demo.txt

p、、、、、、または文字のいずれもシェルuに特別な文字ではないため、一重引用符は必要ありません。rchase.

grep -F purchase. demo.txt

または、エスケープされた正規表現演算子grepなしで-F使用できます。.\

grep 'purchase\.' demo.txt

一重引用符\(シェルにも特別であり、引用符演算子がある)は文字通りに渡されますgrep。または、\シェル引用符演算子を使用してそれ自体を引用することもできます。

grep purchase\\. demo.txt

[set]正規表現演算子を使用してテキストを一致させることもできます.

grep 'purchase[.]' demo.txt

もう一度[set]そうです。返品したがって、シェル演算子(ワイルドカード演算子)も引用符で囲む必要があります(ここでは単一引用符が再使用されます)。

関連情報