Tengo un gran archivo de texto utf-8 con el que busco con frecuencia grep. Recientemente grepcomenzó 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 diffellos, 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.
nulalgunos Escs. Traté de luchar por ellos. Pude encontrar el escs ( \x1B), pero nulnunca apareció. La prueba dada anteriormente mostró 1, para la línea que contiene Escs, 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 nuls en su archivo). (Además, puede que sea mejor usarlo [[:cntrl:]])
sed -z 's/.*\(....\)$/\1/' foo | od -cver algunos caracteres antes del NUL(si hay uno), lo que podría llevarlo al problema.
sedno tiene una -zopción: sed: invalid option -- 'z'.