Ich habe eine sehr große Textdatei (40GB gziped) wo Datenblöcke durch //
getrennt sind.Wählen Sie den ganzen Textblock, der durch einige Zeichen begrenzt wird
Wie kann ich Datenblöcke auswählen, bei denen eine bestimmte Zeile einem bestimmten Kriterium entspricht? Das heißt, kann ich ein Muster und erweitere die Auswahl in beiden Richtungen auf das //
Delimiter? Ich kann keine Vermutungen über die Größe des Blocks und die Position der Linie machen.
not interesting 1
not interesting 2
//
get the whole block 1
MATCH THIS LINE
get the whole block 2
get the whole block 3
//
not interesting 1
not interesting 2
//
Ich möchte den Datenblock mit MATCH THIS LINE
wählen:
get the whole block 1
MATCH THIS LINE
get the whole block 2
get the whole block 3
ich sed
versucht, aber kann meinen Kopf nicht um die Musterdefinition zu erhalten.
sed -n -e '/\/\//,/MATCH THIS LINE/ p' file.txt
aber es funktioniert nicht die //
passend: Dies sollte zum Beispiel //
-MATCH THIS LINE
entsprechen.
Ist es möglich, dies mit GNU-Kommandozeilen-Tools zu erreichen?
Perfect, das funktioniert. Ist es möglich, das '//' zu behalten und es auf die Ausgabe zurück zu drucken? –
@MartinPreusse wie genau? Über und unter dem Block? – fedorqui
Unten. I.e. Behalte das Trennzeichen zwischen Datenblöcken. –