7
votes

Comment trouver des caractères non imprimables dans le fichier?

J'ai essayé de trouver les caractères non imprimables dans le fichier de données à UNIX. Code: xxx

Le code ne fonctionne pas, aidez-moi à obtenir une solution pour la requête ci-dessus.


3 Réponses :


12
votes

Vous pouvez utiliser grep code> pour rechercher des caractères non imprimables dans un fichier, quelque chose comme ce qui suit, qui trouve toutes les non-imprimables-ASCII et tous les non-ASCII:

perl -ne '$x++;if($_=~/[\x00-\x1F\x7F-\xFF]/){print"$x:$_"}' input_file


4 commentaires

Bonjour merci pour vos informations mais le commandement Grep n'a pas fonctionné. En fait, je voulais trouver les caractères non imprimables dans le fichier s'il vous plaît aider si vous le pouvez


La plage \ x80- \ xff couvre non-ASCII mais l'OP demande des caractères non transmissibles qui, dans le contexte de l'ASCII, comprennent également \ x00- \ x1f .


Le premier grep manque un "X". Je ne peux pas modifier pour ne changer que 1 personnage ici


@Bjornruffians: Merci pour cela, j'ai ajouté le x dans.



9
votes

Vous pouvez essayer quelque chose comme ceci:

grep '[^[:print:]]' filePath


5 commentaires

Pouvez-vous fournir une partie du fichier comme exemple. Encore une fois, vous voulez montrer les lignes contenant ces personnages ou?


Salut Smith, veuillez trouver le disque ci-dessous


ABC | 111112 | Tentative | Inde | Australie | Angleterre ABC | 222222 | Tentative ^ z | Inde | Australie | Angleterre ABC | 333333 | Tentative | Inde | Australie | ENGLADN ABC | 444444 | Romatic ^ z | Inde | Australie | Engladn


Dans le record ci-dessus, je dois remplir les enregistrements n ° 2 et 4 car ils contiennent des caractères non transmissibles et des enregistrements 1 et 3 vont bien.


Vous devez utiliser [^ [: Imprimer:] [: vide:]] si vous ne souhaitez pas inclure d'espaces / onglets.



-2
votes

Cela sonne jolie Trit, mais je ne savais pas comment le faire juste maintenant. Je suis devenu friand de "OD" en fonction de ce que vous faites, vous voudrez peut-être quelque chose de convivial pour imprimer des caractères arbitraires. Le code AWK n'est pas très élégant, mais il est flexible si vous recherchez des spécificités, le but est simplement de montrer l'utilisation de DO cependant. Notez que les problèmes avec AWK se compare et les espaces, etc.,

cat filename | od -A n -t x1z | awk '{ p=0; i=1; if ( NF>16) { while (i<17) {if ( $i!="0d"){ if ( $i!="0a") {if ( $i" " < "20 " ) {print $i ; p=1;}  if ( $i" "> "7f "){print $i;   p=1;}}}  i=i+1} if (p==1) print $0; }}' | more


0 commentaires