c:\を見つける方法

c:\を見つける方法

私はcygwinのgrepを使ってCドライブにハードコードされたパスのすべてのインスタンスを見つけます。行為:

grep -r "c:\\" .

与えられたgrep: trailing backslash

どうすればいいのか知っている人はいますか?

ベストアンサー1

エラーは二重引用符()を使用したために発生します"。これにより、コンテンツが到着する前にシェルがコンテンツを解釈できますgrep

試してgrep -r 'c:\\' .みてください。

echo 'c:\' > test
ire@localhost$ cat test
c:\
ire@localhost$ grep -r 'c:\\' test
c:\

説明する\シェルとgrepに特別な意味があります。次の文字を文字通り解釈できるようにエスケープ文字として使用されます。

これにより、grep "c:\\"シェルはコンテンツを取得し、リテラル文字列に変換してc:\に渡しますgrepgrep単一のバックスラッシュが表示され、エスケープ文字として解釈されます。しかし、追いついたり\逃げたりするキャラクターはありません!したがって、文句を言うのは合理的です。

'シェルからコンテンツを保護するには、単一引用符()を使用してください。しかし、まだ2つのスラッシュが必要です。なぜなら、grepこれが探している文字通りのバックスラッシュであることを知らなければならないからです。

または、次のことができます。

grep -rF 'C:\' .

または

grep -rF "C:\\" .

grepオプション-F(以前はfgrepコマンドと呼ばれていました)は、grep次のものを見つけるように指示します。固定文字列したがって、エスケープする項目はなく、バックスラッシュは特別ではありませんgrep(ただし、二重引用符内のシェルにはまだ適用されます)。

おすすめ記事