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.
Und die Datei, mit der ich dieses Muster abgleiche, ist file.txt
,
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% 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]:
.
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%Tags und Links grep