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 solche sed -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.

InformationsquelleAutor Ram | 2013-03-04
Schreibe einen Kommentar