grepで二重引用符をエスケープする


91

二重引用符で囲まれたキーワードのgrepを実行したかったのです。簡単な例を挙げます。

echo "member":"time" | grep -e "member\""

それは一致しません。どうすれば修正できますか?

回答:


133

問題は、入力文字列を正しくエスケープしていないことです。次のことを試してください。

echo "\"member\":\"time\"" | grep -e "member\""

または、単一引用符内でエスケープされていない二重引用符を使用することもできます。

echo '"member":"time"' | grep -e 'member"'

2番目のアプローチでは、コマンドを別の単一引用符のセット内にネストすることはできませんが、これは好みの問題です(例ssh 'cmd')。


1
これは機能しますか?echo '"member":"time"' |grep -e "member"テストしませんでした
アリ

ほとんど。である必要がありますecho '"member":"time"' |grep -e 'member"'。どちらのアプローチも有効ですが、意図がより明確であるため、明示的なエスケープを好みます。
cmh 2012

うん、誰かがこれを好むかもしれないのが好きなら、多分あなたの答えを編集してください(+1)
アリ

これ(バックスラッシュを使用)は、Windowsでは機能しません。実際には部分的には機能しますが、出力をファイルにリダイレクトできません。
RadimCernej19年

@RadimCernej Windows固有の質問をすることをお勧めします-これは、この質問の範囲外のようです。
CMH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.