Al save un file, grep devuelve verdadero en lugar de las líneas, ¿por qué?

Estoy ejecutando un grep en un file que es de aproximadamente 13G de tamaño. Está volviendo

Binary file file.xml matches 

No esperaba esto, pensé que devolvería cada línea con mi cadena para poder ejecutar lo siguiente,

 grep "searchString" ./file.xml | wc -l 

y devolver un recuento de todas las apariciones de mi searchString en mi file grande.

Parece que grep piensa que tu file XML es binary en lugar de text.

Si desea forzar a grep a tratar su file como text independientemente de su contenido, puede usar su – --text (suponiendo que GNU grep), así:

 grep --text "searchString" ./file.xml | wc -l 

Tenga en count que si todo lo que desea es contar las coincidencias, probablemente sea mejor utilizar grep --count lugar de piping a través de wc -l , lo que le ahorrará un pipe y procesará la invocación.

Parece que hay algunos símbolos poco comunes al principio de su file y grep detecta como binary. Puede probar la --binary-files=text .

 grep --binary-files=text "searchString" file.xml | wc -l 

De la página del hombre:

  --binary-files=TYPE If the first few bytes of a file indicate that the file contains binary data, assume that the file is of type TYPE. By default, TYPE is binary, and grep normally outputs either a one-line message saying that a binary file matches, or no message if there is no match. If TYPE is without-match, grep assumes that a binary file does not match; this is equivalent to the -I option. If TYPE is text, grep processes a binary file as if it were text; this is equivalent to the -a option. Warning: grep --binary-files=text might output binary garbage, which can have nasty side effects if the output is a terminal and if the terminal driver interprets some of it as commands. 

Parece que tiene un error al usar ./file.xml . Si intentas:

 grep "searchString" file.xml | wc -l 

¿Tiene algún problema?