Втеча з подвійних лапок у grep


91

Я хотів зробити grep для ключових слів із подвійними лапками всередині. Щоб навести простий приклад:

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

Це не відповідає. Як я можу це виправити?

Відповіді:


133

Проблема полягає в тому, що ви неправильно уникли вхідного рядка, спробуйте:

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

Крім того, ви можете використовувати нескопійовані подвійні лапки в межах одинарних лапок:

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

Це питання переваги, яку ви знайдете чіткішою, хоча другий підхід заважає вам вкладати свою команду в інший набір одинарних лапок (наприклад ssh 'cmd').


1
це спрацює? echo '"member":"time"' |grep -e "member"не тестував
мураха

Майже. Це має бути echo '"member":"time"' |grep -e 'member"'. Обидва підходи є дійсними, але я віддаю перевагу явному екрануванню, оскільки намір є більш зрозумілим.
cmh

так, можливо, відредагуйте свою відповідь, якщо вам подобається, хтось вважає за краще це (+1)
мураха

Це (за допомогою зворотної косої риски) у мене не працює в Windows. Насправді це частково працює, але я не можу перенаправити висновок у файл.
Радім Черней

@RadimCernej Я б рекомендував задати конкретне запитання щодо Windows - це, схоже, не входить у рамки цього.
cmh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.