Über 'grep -f': Muster mit Datei abgleichen

8

Ich verwende die Funktion grep -f , um Zeilen aus einer Datei zu extrahieren, die einem bestimmten Muster entsprechen. Nehmen wir an, meine Musterdatei ist pattern.txt , wie folgt.

%Vor%

Und die Datei, mit der ich dieses Muster abgleiche, ist file.txt ,

%Vor%

Wenn ich jetzt eine grep -f pattern.txt file.txt mache, bekomme ich das - & gt;

%Vor%

Die letzte Zeile in der obigen Ausgabe verursacht mein Problem. Wie ändere ich diesen grep-Befehl, um die Ausgabe (korrekte Übereinstimmungen anzeigen) wie folgt zu erhalten?

%Vor%     
ana 31.05.2012, 11:55
quelle

2 Antworten

12

Fügen Sie ^ vor Ihren Mustern hinzu, so dass grep mit einer Linie übereinstimmt, die mit Ihrem Muster beginnt. Wenn Ihr Muster tatsächlich aus Zahlen besteht, benötigen Sie keine Musterliste. Verwenden Sie einfach ^[1-5]: .

    
Prince John Wesley 31.05.2012, 11:56
quelle
6

Nun, es gibt viele mögliche Lösungen. Sie sagen grep , um alle Zeilen zu finden, die eine 3 enthalten, und die Zeile '8 :: 3rr' enthält tatsächlich eine 3. Sie müssen genauer sein, was Sie suchen.

Sie können beispielsweise die Muster in "1:", "2:" usw. ändern, sodass nur Zahlen gefolgt von einem Doppelpunkt angezeigt werden. Oder Sie könnten sie in '^ 1', '^ 2' usw. ändern, um nur Zahlen am Anfang der Zeile zu finden. Es hängt von Ihren Daten ab, aber wahrscheinlich möchten Sie beide, so dass Ihre Suche nach '1:' nicht mit '21: 'übereinstimmt und Ihre Suche nach' ^ 5 'nicht mit '53:' übereinstimmt. In diesem Fall würde Ihre Musterdatei so aussehen:

%Vor%     
Mark Reed 31.05.2012 12:01
quelle

Tags und Links