2017-02-25 4 views
0

Ich versuche, eine Datei für die genaue Auftreten einer Übereinstimmung grep, aber ich habe auch mehr falsche Treffer:nur Erste grep exakte Treffer

grep CAT1717O99 myfile.txt -F -w 

Ausgang:

CAT1717O99 

CAT1717O99.5 

Ich möchte nur die erste genau passende Zeile ausgeben. Gibt es eine Möglichkeit, die zweite Linie loszuwerden? Vielen Dank im Voraus. Arturo

Dies ist die Datei 'myfile.txt':

CAT1717O99 

CAT1717O99.5 
+0

Können Sie das Fragment von 'myfile.txt' anzeigen? – RomanPerekhrest

Antwort

0

Dies wird die Arbeit für Sie tun.

grep -Fx "CAT1717O99" textfile 

-F bedeutet Feste -x die Macht der Perl-kompatiblen regulären Ausdruck (PCRE) genaue

+0

Danke, funktioniert aber nicht. Immer noch bekomme ich die falsche übereinstimmende Linie. – Arturo

+0

Danke. Das hat den Trick gemacht. – Arturo

+0

Wenn es für Sie wie von selbst funktioniert, dann akzeptieren Sie die Antwort, um anderen SO-Benutzern zu helfen. –

1

Verwenden Sie bedeuten und die Übereinstimmungen mit dem vorgegebenen Muster suchen:

grep -Po "\bCAT1717O99(\s|$)" myfile.txt 

(\s|$) - alternative Gruppe, sorgt für übereinstimmenden Teilstring CAT1717O99, wenn es Leerzeichen folgt oder am Ende des l platziert ine

-P Option ermöglicht reguläre Ausdrücke

-o Option, druckt nur abgestimmte Teile passenden Linien

0

Sie explizit anfordern brauchen Räume, um Sonderzeichen zu ignorieren.

grep -E '(^|)CAT1717O99(|$)' myFile.txt 

von grep Handbuch:

-w, --word-regexp Wählen Sie nur die Zeilen mit Spielen, die ganze Wörter bilden. Der Test besteht darin, dass der übereinstimmende Teilstring entweder am Anfang der Zeile oder vor einem Nichtwort-Bestandteilzeichen stehen muss. Ähnlich muss es entweder am Ende der Zeile stehen oder gefolgt von einem Nicht-Wort-Bestandteil. Wortbestandteile sind Buchstaben, Ziffern und der Unterstrich.

Verwandte Themen