0 votes

problème de syntaxe grep sur Lion

J'ai un fichier texte et je recherche la ligne unique bird . Utilisation de OS X Lion et grep 2.5.1.

ça marche :

grep '^bird' file.txt

mais ce n'est pas le cas

grep '^bird$' file.txt

Il n'y a pas d'espace vide à la fin de la ligne. Qu'est-ce que je fais de mal ?

thx

5voto

Mattias Ahnberg Points 151

C'est généralement dû à un fichier texte formaté par DOS (CRLF). Pour nettoyer le fichier, vous pouvez installer un logiciel comme dos2unix mais fonctionne généralement de manière encore plus simple en utilisant l'option tr outil :

tr -d '\r' < testfile > output.txt

4voto

SmartyP Points 610

Je suppose qu'il s'agit d'un fichier CRLF (fichier texte formaté).

[bob@erasmas tmp]$ cat testfile
bird
notbird
[bob@erasmas tmp]$ cat testfile.dos
bird
notbird
[bob@erasmas tmp]$ file testfile
testfile: ASCII text
[bob@erasmas tmp]$ file testfile.dos
testfile.dos: ASCII text, with CRLF line terminators
[bob@erasmas tmp]$ grep '^bird' testfile
bird
[bob@erasmas tmp]$ grep '^bird' testfile.dos
bird
[bob@erasmas tmp]$ grep '^bird$' testfile
bird
[bob@erasmas tmp]$ grep '^bird$' testfile.dos

Note : Ceci s'est passé sur une machine Linux, car ce n'est pas spécifique à OS X (si c'est bien le problème).

Lancez "file" sur file.txt et voyez s'il a des fins de ligne CRLF.

1voto

oHo Points 121

Si vous souhaitez conserver le formatage MS-DOS, vous pouvez insérer le retour chariot MS-DOS dans le motif. Sur linux, j'appuie sur CTRL-V CTRL-M pour produire le littéral ^M représentant le CR MS-DOS (parfois noté comme \r ). J'espère que sous OS X vous trouverez comment produire le CR littéral.

grep --color=none "^bird^M$"

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X