Tengo un gran archivo de texto utf-8 con el que busco con frecuencia grep
. Recientemente grep
comenzó a informar que se trataba de un archivo binario. Puedo continuar buscándolo grep -a
, pero me preguntaba qué cambio hizo que decidiera que el archivo ahora era binario.
Tengo una copia del mes pasado donde el archivo ya no se detecta como binario, pero no es práctico para diff
ellos, ya que difieren en> 20,000 líneas.
file
identifica mi archivo como
Texto en inglés UTF-8 Unicode, con líneas muy largas
¿Cómo puedo encontrar los caracteres / líneas / etc. en mi archivo que están desencadenando este cambio?
La pregunta similar, no duplicada, 19907 cubre la posibilidad de NUL, pero grep -Pc '[\x00-\x1F]'
dice que no tengo NUL ni ningún otro grupo de control ANSI.
nul
algunos Esc
s. Traté de luchar por ellos. Pude encontrar el esc
s ( \x1B
), pero nul
nunca apareció. La prueba dada anteriormente mostró 1, para la línea que contiene Esc
s, pero nada para ningún rango que no contenga \x1B
. No confiaría en esa prueba. Intente en su grep -zc .
lugar (debe ser uno más que el número de nul
s en su archivo). (Además, puede que sea mejor usarlo [[:cntrl:]]
)
sed -z 's/.*\(....\)$/\1/' foo | od -c
ver algunos caracteres antes del NUL
(si hay uno), lo que podría llevarlo al problema.
sed
no tiene una -z
opción: sed: invalid option -- 'z'
.