cmd grep gnu

cmd - ¿Cómo puedo evitar una comilla doble con GNU grep para windows/dos?



grep en dos (1)

Debes preocuparte por las comillas de escape tanto para grep como para cmd.exe

grep espera que las comillas se escapen como /"

cmd.exe escapa de las comillas como ^" . La cita es una máquina de estado, lo que significa que las comillas no guardadas activan y desactivan la semántica de cotizaciones. Cuando las citas están activadas, los caracteres especiales como < , | , & , etc. se tratan como literales. activa la semántica de cotización. La siguiente cita desactiva la semántica de cotización. Solo es posible eludir una cotización cuando la cotización está DESACTIVADA. Las cotizaciones no equilibradas dan como resultado el resto. Por lo tanto, en su caso, el >>tmp.txt no se trata como redirección por cmd.exe, por lo que pasa a grep como argumento.

Cualquiera de los siguientes funcionará:

grep -r "Assembly=/"Foobar^" . >>tmp.txt grep -r ^"Assembly=/"Foobar" . >>tmp.txt grep -r ^"Assembly=/^"Foobar^" . >>tmp.txt grep -r Assembly=/^"Foobar . >>tmp.txt

Si su término de búsqueda incluye espacios, entonces grep necesita las citas adjuntas, por lo que necesitaría cualquiera de los primeros tres formularios. El último formulario no funcionaría con espacios en el término de búsqueda.

Estoy tratando de buscar

Asamblea = "Foobar

en todos los archivos y dirigir la salida a tmp.txt

Lo he intentado (cmd / error)

grep -r "Assembly = /" Foobar ". >> error tmp.txt (argumento no válido)

grep -r "Assembly =" "Foobar". >> tmp.txt
error (no suficiente espacio)

grep -r ''Assembly = "Foobar''. >> tmp.txt
error (no suficiente espacio)

Muy frustrante. ¿Alguna sugerencia?