Escape tanda kutip ganda di grep


91

Saya ingin melakukan grep untuk kata kunci dengan tanda kutip ganda di dalamnya. Sebagai contoh sederhana:

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

Itu tidak cocok. Bagaimana cara memperbaikinya?

Jawaban:


133

Masalahnya adalah Anda tidak keluar dengan benar dari string input, coba:

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

Alternatifnya, Anda dapat menggunakan tanda kutip ganda tanpa konversi karakter dalam tanda kutip tunggal:

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

Ini adalah masalah preferensi yang menurut Anda lebih jelas, meskipun pendekatan kedua mencegah Anda menempatkan perintah Anda di dalam kumpulan tanda kutip tunggal lainnya (misalnya ssh 'cmd').


1
apakah ini akan berhasil? echo '"member":"time"' |grep -e "member"tidak menguji
semut

Hampir. Itu perlu echo '"member":"time"' |grep -e 'member"'. Kedua pendekatan tersebut valid, tetapi saya lebih memilih pelolosan eksplisit, karena tujuannya lebih jelas.
cmh

ya, mungkin edit jawaban Anda jika Anda suka seseorang mungkin lebih suka ini (+1)
semut

Ini (menggunakan garis miring terbalik) tidak berfungsi di Windows untuk saya. Sebenarnya ini berfungsi sebagian, tetapi saya tidak dapat mengarahkan output ke file.
Radim Cernej

@ RadimCernej Saya akan merekomendasikan mengajukan pertanyaan khusus jendela - tampaknya di luar cakupan yang satu ini.
cmh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.