Grep'de çift alıntıdan kaçış


91

İçinde çift tırnak bulunan anahtar kelimeler için grep yapmak istedim. Basit bir örnek vermek gerekirse:

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

Bu eşleşmiyor. Nasıl düzeltebilirim?

Yanıtlar:


133

Sorun, giriş dizesinden doğru şekilde kaçmamanızdır, şunu deneyin:

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

Alternatif olarak, tek tırnak içinde çıkış karaktersiz çift tırnak kullanabilirsiniz:

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

Bu, daha açık bulduğunuz bir tercih meselesidir, ancak ikinci yaklaşım, komutunuzu başka bir tekli tırnak kümesi içine yerleştirmenizi engeller (örneğin ssh 'cmd').


1
Bu işe yarayacak mı ? echo '"member":"time"' |grep -e "member"test etmedi
karınca

Neredeyse. Olması gerekiyor echo '"member":"time"' |grep -e 'member"'. Her iki yaklaşım da geçerlidir, ancak niyet daha açık olduğundan açık bir şekilde kaçmayı tercih ederim.
cmh

evet, belki birisinin bunu tercih edebileceğini düşünüyorsanız cevabınızı düzenleyin (+1)
ant

Bu (ters eğik çizgi kullanarak) benim için Windows'ta çalışmıyor. Aslında kısmen çalışıyor, ancak çıktıyı bir dosyaya yeniden yönlendiremiyorum.
Radim Cernej

@RadimCernej Windows'a özel bir soru sormayı tavsiye ederim - bunun kapsamı dışında görünüyor.
cmh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.