sed extrahieren von text zwischen zwei mustern, wenn das zweite Muster kann entweder von einem
Ich versuche, zu extrahieren text zwischen motiv1 (fest) und pattern2 (dies kann p2, 1/p2-2).
können Sie mir bitte sagen, wie Sie diese erreichen in einem einzigen Befehl?
Einer Datei beginnt mit start
und endet entweder mit end
oder close
File1:
======
junktest
data
start
stackoverflow
sed
close
File2:
======
data2
start
stackoverflow
end
Kann ich extrahieren von text aus Datei1 mit
sed -n "/start/,/close/p"
Und aus Datei2 mit
sed -n "/start/,/end/p"
Ich noch einen sed-Befehl, um beides zu erreichen..
so etwas wie:
sed -n "/start/, /close or end /p"
- Drucken Sie beide Dateien auf einmal oder zwei Muster Räume?
- Eigentlich habe ich nur gemacht es zwei Dateien.. Aber ich bekomme eine Ausgabe von einem Befehl, ich habe zum extrahieren von text zwischen zwei mustern aus der Ausgabe.. Beginnen Muster fixiert ist..Aber das end-format kann eine von Zwei(Feste). Gibt es eine Möglichkeit, ich kann angeben, dass im sed-Befehl
- Ah, versuchen Sie es mit
|
gibt "oder" als solchesed -n "/start/,/close|end/p"
- NÖ, das scheint nicht zu funktionieren!
- Ich habe versucht, sed -n "/start/,/close|end/p" und sed -n "/start/,/close\|end/p"
- Versuchen Sie (schließen|beenden). Welche version von sed haben Sie?
- Nein, funktioniert nicht. FreeBSD 7.1 version.
- BSD-sed ist anders. Vielleicht versuchen Sie, ein -E-zu Ihrem Befehl nach der pipe-Zeichen. Es ist für erweiterte reguläre Ausdrücke.
- sed -n -E "/Wort1/,/Wort2-1/p" | sed -n -E "/Wort1/,/Wort2-2/p" vielen Dank für die Hilfe @squiguy
- So hast du es zur Arbeit? Ich würde vorschlagen, schließen Sie Ihre Frage oder beantworten Sie selbst. Froh, dass ich helfen konnte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowohl GNU
sed
- und BSD -sed
:sed
Antworten, also vielen Dank so viel für die Prüfung in BSD!Diesem awk sieht besser aus
Einfach mit
awk
: