Was ist der beste Weg, um mit grep nur die endgültige Übereinstimmung eines regulären Ausdrucks in einer Datei zu erhalten?
Ist es auch möglich, am Ende der Datei statt am Anfang mit dem Greifen zu beginnen und zu stoppen, wenn die erste Übereinstimmung gefunden wird?
tac file | grep -m 1 pattern
grep -n
) in der eigentlichen Datei haben wollte, musste ich meiner Meinung nachtac
ziemlich viel vermeiden, es sei denn, ich wollte etwas subtrahierenwc -l
. Ansonstentac
mitgrep -m1
macht sehr viel Sinn.grep
sie nach dem ersten Spiel nicht mehr funktioniert. without-m 1
,grep
findet zuerst alle passenden Muster in der Datei und zeigt dannhead
nur das erste an - viel weniger effizient. Dennis, bitte schreibe dies in eine separate Antwort!Für jemanden, der mit riesigen Textdateien unter Unix / Linux / Mac / Cygwin arbeitet. Wenn Sie Windows verwenden, informieren Sie sich über Linux-Tools in Windows: https://stackoverflow.com/questions/3519738/what-is-the-best-way-to-use-linux-utilities-under-windows .
Man kann diesem Workflow folgen, um eine gute Leistung zu erzielen:
zq
aus dem Paket ab.Zitat aus seiner Github Readme:
Index erstellen
Index abfragen
quelle
Ich benutze immer Katze (aber das macht es ein bisschen länger):
cat file | grep pattern | tail -1
Ich würde meinen Linux Admin Kurslehrer am College beschuldigen, der Katzen liebt :))))
- Sie müssen eine Datei nicht erst kategorisieren, bevor Sie sie greifen können.
grep pattern file | tail -1
und ist auch effizienter.quelle
cat
die Datei nicht brauchen, um sie weiterzuleitengrep
. Sie könnengrep
die Datei direkt über durchsuchengrep pattern file
(und dann verwendentail
, um das letzte Ergebnis zurückzugeben), wie in der Antwort von Cakemox.