J'ai un grand fichier texte utf-8 avec lequel je recherche fréquemment grep. Récemment, j'ai grepcommencé à signaler qu'il s'agissait d'un fichier binaire. Je peux continuer à le rechercher avec grep -a, mais je me demandais avec quel changement il a décidé que le fichier était maintenant binaire.
J'ai une copie du mois dernier où le fichier n'est plus détecté comme binaire, mais ce n'est pas pratique pour diffeux car ils diffèrent sur> 20 000 lignes.
file identifie mon fichier comme
Texte anglais UTF-8 Unicode, avec de très longues lignes
Comment trouver les caractères / lignes / etc. dans mon fichier qui déclenchent ce changement?
La question similaire, non dupliquée 19907 couvre la possibilité de NUL mais grep -Pc '[\x00-\x1F]'dit que je n'ai pas de NUL ou d'autres chaarcteurs de contrôle ANSI.
nulet quelques Escs. J'ai essayé de les saluer. J'ai pu trouver le escs ( \x1B), mais le nulne s'est jamais présenté. Le test donné ci-dessus a montré 1, pour la ligne contenant Escs, mais rien pour une plage qui n'en contenait pas \x1B. Je ne ferais pas confiance à ce test. Essayez à la grep -zc .place (devrait être un de plus que le nombre de nuls dans votre fichier). (En outre, il vaut peut-être mieux utiliser [[:cntrl:]].)
sed -z 's/.*\(....\)$/\1/' foo | od -cde voir quelques caractères avant NUL(s'il y en a un), ce qui pourrait vous conduire au problème.
sedn'a pas l' -zoption: sed: invalid option -- 'z'.