Escape comillas dobles en grep


91

Quería hacer grep para palabras clave con comillas dobles adentro. Para dar un ejemplo simple:

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

Eso no coincide. ¿Cómo puedo arreglarlo?

Respuestas:


133

El problema es que no está escapando correctamente de la cadena de entrada, intente:

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

Alternativamente, puede usar comillas dobles sin escape dentro de comillas simples:

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

Es una cuestión de preferencia que encuentra más clara, aunque el segundo enfoque le impide anidar su comando dentro de otro conjunto de comillas simples (por ejemplo ssh 'cmd').


1
esto funcionara ? echo '"member":"time"' |grep -e "member"no probó
hormiga

Casi. Tiene que serlo echo '"member":"time"' |grep -e 'member"'. Ambos enfoques son válidos, pero prefiero escapar explícitamente, ya que la intención es más clara.
cmh

sí, tal vez edite su respuesta si le gusta alguien podría preferir esto (+1)
hormiga

Esto (usando barra invertida) no funciona en Windows para mí. En realidad, funciona parcialmente, pero no puedo redirigir la salida a un archivo.
Radim Cernej

@RadimCernej Recomendaría hacer una pregunta específica de Windows, parece fuera del alcance de esta.
cmh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.