Ich möchte in einer bestimmten Datei nach einer bestimmten Zeichenfolge suchen. Wenn ich die Zeichenfolge gefunden habe, möchte ich auch die Zeilen der Zeile X vor (oder nach) dieser Zeile drucken.
Kann das mit grep oder awk oder brauche ich eine Kombination?
Ich möchte so etwas wie haben , diese aber nicht mit allen Hinter / führenden Linien vor oder nach einem Treffer, nur der X - te.
Zum Beispiel, wenn meine Eingabe so aussieht:
line1 with a pattern
line2
line3
line4 with a pattern
line5
line6
line7 with a pattern
...
Ich möchte zB nach dem Wort 'Muster' suchen und diese Zeile + die Zeile ausgeben, die 2 Zeilen danach ist, aber nicht die Zeile, die direkt auf die Zeile mit dem Muster folgt. Die gewünschte Ausgabe ist also:
line1 with a pattern
line3
line4 with a pattern
line6
line7 with a pattern
...
awk
ist so allgemein, dass Sie es verwenden können, um Ihre Aufgabe zu lösen, aber Sie müssten ein Skript schreiben. In diesem Fall wäre die Antwort also ja . Wie Sie bereits herausgefunden haben,grep
können Sie Ihre Aufgabe bis zu einem gewissen Grad erledigen, aber vielleicht nicht alles. Warum konzentrieren Sie sich auf diese beiden Tools, erwähnen sie abersed
in Ihren Tags? Ist Ihre eigentliche Frage: Kann ich dies nur mit Standard-GNU-Tools ohne Skripterstellung tun / kombinieren? Die Antwort lautet wahrscheinlich auch Ja, kann aber aufgrund von Sonderfällen etwas kniffliger sein: Was ist beispielsweise die gewünschte Ausgabe, wenn das Muster in den ersten X- oder letzten X-Zeilen gefunden wird?