2010-12-07 6 views
1

J'ai un fichier de 500MB. Il contient des caractères non-ascii. Je veux juste trouver ces caractères en utilisant la commande Unix. Mai il vaudra mieux obtenir les numéros de ligne et la position à chaque ligne.Commande Unix pour trouver des caractères non-ascii

Merci :)

+0

Vous pouvez trouver une réponse ici à http://stackoverflow.com/questions/3001177/how-do-i-grep-for-non-ascii-characters-in-unix – vpit3833

+0

@ vpit3833: je ne suis pas très familier avec Je pense que ce lien ne fournit pas les numéros de ligne de ces caractères non-ascii. suis désolé si je me trompe ... –

Répondre

2

Vous savez, c'est bizarre. Parfois, je trouve plus rapide à coder une C rapide et sale que d'essayer de naviguer dans le désert d'options en ligne de commande utilitaire UNIX :-)

#include <stdio.h> 

int main (void) { 
    size_t ln = 1; 
    size_t chpos = 0; 
    int chr; 
    while ((chr = fgetc (stdin)) != EOF) { 
     if (chr == '\n') { 
      ln++; 
      chpos = 0; 
      continue; 
     } 
     chpos++; 
     if (chr > 127) { 
      printf ("Non-ASCII %02x found at line %d, offset %d\n", 
       chr, ln, chpos); 
     } 
    } 
    return 0; 
} 

Cela vous donnera à la fois le numéro de ligne et le caractère position à l'intérieur de cette ligne, de tous les caractères en dehors de la plage ASCII.

Questions connexes