2012-03-21 2 views

Répondre

5

Selon l'homme page grep, vous pouvez spécifier -U ou --binary à:

Traiter le fichier (s) sous forme binaire. Par défaut, sous MS-DOS et MS-Windows, grep devine le type de fichier en examinant le contenu de la première lecture de 32 Ko à partir du fichier. Si grep décide que le fichier est un fichier texte, il supprime les caractères CR du contenu du fichier d'origine (pour que les expressions régulières fonctionnent correctement avec ^ et $). La spécification -U annule cette conjecture, entraînant la lecture et la transmission textuelle de tous les fichiers au mécanisme correspondant; Si le fichier est un fichier texte avec des paires CR/LF à la fin de chaque ligne, certaines expressions régulières échouent. Cette option n'a aucun effet sur les plates-formes autres que MS-DOS et MS-Windows.

Alors:

$ head -3 test.ctl 
row 1 
row 2 
row 3 
$ head -3 test.ctl | cat -nv 
    1 row 1^M 
    2 row 2^M 
    3 row 3 
$ head -3 test.ctl | grep '[^[:print:]]' 

$ head -3 test.ctl | grep '[[:cntrl:]]' 

$ head -3 test.ctl | grep -U '[^[:print:]]' 
row 1 
row 2 

$ head -3 test.ctl | grep -U '[[:cntrl:]]' 
row 1 
row 2 
Questions connexes