grepのバックスラッシュ文字\と一重引用符が混乱しています。私の理解では、文字通りの意味を維持します。例えば
私はこうすればecho 'This is \.
私に与えるでしょうThis is \.
ただし、実際の.(ピリオド)と一致させるには、「\.」という特別な意味を使用する必要があります。正規表現で。たとえば、次からインポートしたデモ.txtファイルがある場合このサイトの例
私の質問は、この場合、 " "はgrepの文字通りの値をどのように保存しないのですか?これは私にとって非常に混乱していることが判明しました。どんな説明でもとても役に立ちます。
答え1
一重引用符は、文字が解釈されないように保護します。シェルただし、grep
まだパラメータを正規表現として扱います。
-F
または、オプションを使用してgrepを実行してこの動作をオフにすることもできます--fixed-strings
。
grep -F 'purchase.' demo.txt
p
、、、、、、または文字のいずれもシェルu
に特別な文字ではないため、一重引用符は必要ありません。r
c
h
a
s
e
.
grep -F purchase. demo.txt
または、エスケープされた正規表現演算子grep
なしで-F
使用できます。.
\
grep 'purchase\.' demo.txt
一重引用符\
(シェルにも特別であり、引用符演算子がある)は文字通りに渡されますgrep
。または、\
シェル引用符演算子を使用してそれ自体を引用することもできます。
grep purchase\\. demo.txt
[set]
正規表現演算子を使用してテキストを一致させることもできます.
。
grep 'purchase[.]' demo.txt
もう一度[set]
そうです。返品したがって、シェル演算子(ワイルドカード演算子)も引用符で囲む必要があります(ここでは単一引用符が再使用されます)。