
welchen Befehl muss ich verwenden, um alle Zeilen einer Datei anzuzeigen, die mit einer Zeile beginnen, die ich mit grep finde?
also stelle ich mir so etwas wie einen Schwanz vor, der aber mit einer Linie beginnt, die ich mit einem grep identifiziere.
Ich schaue mir beispielsweise ein Protokoll an und kann einen Punkt identifizieren, der eine Zeitangabe enthält. Daher möchte ich alle Protokollzeilen sehen, die nach der Protokollzeile kommen, die ein bestimmtes Datum und eine bestimmte Uhrzeit enthält.
Antwort1
das hier sollte genügen:
sed -n -e "/pattern/,\$p" filename
Antwort2
Die Option -A für grep kann dies tun. Normalerweise wird sie für den Kontext verwendet.nachÜbereinstimmungen und -B für KontextVorÜbereinstimmungen. Die Option -m begrenzt die Anzahl der Übereinstimmungen.
grep -A1000000 -m1 <search> <file>
gibt bis zu 1.000.000 nachfolgende Kontextzeilen aus (und damit dies funktioniert, müssen Sie nur sicherstellen, dass die Zahl größer ist als die Anzahl der Zeilen in der Datei – und wenn Ihre Datei mehr als 1.000.000 Zeilen lang ist, ist grep wahrscheinlich nicht das richtige Tool). In ähnlicher Weise
grep -B1000000 -m1 <search> <file>
druckt alle Zeilen bis zur ersten Übereinstimmung aus. (Soweit ich weiß, ist dies nicht die beabsichtigte Verwendung dieser Optionen, sondern ein natürlicher Nebeneffekt ihrer Funktionsweise: Die Alternative besteht darin, ein anderes Programm als grep zu verwenden.)