eine Textdatei mit der Gegeben folgende:sed: Wählen Sie Linien zwischen zwei Mustern
REGEX1
3 - multiple line block
4
REGEX1
7 - multiple line block
REGEX1
10 - multiple line block
dh ich will Linien extrahieren einschließlich zwischen REGEX1 und REGEX2:
1
2
REGEX1
3 - multiple line block
4
REGEX2
5
6
REGEX1
7 - multiple line block
REGEX2
8
9
REGEX1
10 - multiple line block
ich folgendes extrahieren möchten einschließlich REGEX1, aber nicht REGEX2.
Ich habe ein sed
Skript geschrieben: sed -n '/REGEX1/,/REGEX2/{/REGEX2/!p}' file
.
Es funktioniert gut, aber wenn eine Instanz wie folgt angegeben:
1
2
REGEX2 REGEX1
3 - multiple line block
4
REGEX2
5
6
REGEX2 REGEX1
7 - multiple line block
REGEX2
8
9
REGEX2 REGEX1
10 - multiple line block
Mein Skript nur gibt mir:
3 - multiple line block
4
7 - multiple line block
10 - multiple line block
Wo, wie ich es ausgeben möchten sein:
REGEX2 REGEX1
3 - multiple line block
4
REGEX2 REGEX1
7 - multiple line block
REGEX2 REGEX1
10 - multiple line block
Wie kann ich dies ohne Ineffizienz erreichen (wie Speichern von Zeilennummern und erneutes Durchlaufen der Datei)?
Was ist die erwartete Ausgabe für die zweite Probe? Vielleicht suchen Sie nach Linienankern? 'sed -n '/ REGEX1 /,/REGEX2/{/^REGEX2 $ /! p}'' – Sundeep
@Sundeep Ich habe meine Frage bearbeitet, um sie einzuschließen! – gitmorty
na dann 'sed -n '/ REGEX1 /,/REGEX2/{/^REGEX2 $ /! P}' 'ist was du suchst? – Sundeep