2010-10-26 12 views
1

Disons que nous avons deux fichiers.Passer un fichier avec plusieurs modèles à grep

match.txt: Un fichier contenant des motifs pour correspondre:

fed ghi 
tsr qpo 

donnees.txt: Un fichier contenant des lignes de texte:

abc fed ghi jkl 
mno pqr stu vwx 
zyx wvu tsr qpo 

Maintenant, je veux lancer une commande grep qui doit renvoyer les première et troisième lignes de data.txt:

abc fed ghi jkl 
zyx wvu tsr qpo 

... parce que chacune de ces deux lignes correspond à l'un des motifs match.txt.

J'ai essayé:

grep -F -f match.txt data.txt 

mais qui renvoie aucun résultat.

Informations grep: GNU grep 2.6.3 (Cygwin)
information OS: Windows 2008 R2

Mise à jour: Le fix est d'utiliser cette commande: tr -d "\r" <match.txt | grep -F -f - text.txt

Il semble que grep ne respecte pas correctement les fenêtres de fin de ligne (CR/LF) pour les fichiers de correspondance qui lui sont présentés via l'indicateur -f.

+0

Mise à jour de grep cygwin vers la dernière version (de 2.5.4 à 2.6.3), le problème persiste. –

Répondre

2

J'ai juste essayé exactement l'exemple que vous avez donné et cela a fonctionné comme prévu.

[~] $ grep -F -f match.txt data.txt 
abc fed ghi jkl 
zyx wvu tsr qpo 

Pouvez-vous donner plus d'informations? Quel système d'exploitation utilisez-vous? Quelle version de grep? Quelles terminaisons de ligne contiennent vos fichiers d'entrée?

+0

Il y a une balise Windows attachée à cette question. J'ai mis à jour la question originale avec des informations sur la version complète. –

+0

J'ai vu l'étiquette. Est-ce grep Cygwin ou grep SFU? – JohnCC

+0

Cygwin - question mise à jour ... –