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?

Qiang Li
fuente

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').

cmh
fuente
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