
Ich möchte diese Zeile einer Textdatei
This is to become line 1 and that is line 2
Soll in zwei Zeilen aufgeteilt werden, wie folgt:
This is to become line 1
and that is line 2
Beachten Sie, dass ich nichts bearbeiten/ausschneiden/entfernen möchte, kein einziges Zeichen. Ich möchte am Ende nur zwei Textzeilen statt einer haben und entscheiden können, wo die Teilung erfolgen soll. Wie kann ich dafür sed
oder awk
oder split
verwenden? Es ist mir eigentlich egal, welches ich verwende, aber sed
wenn möglich würde ich bevorzugen ...
Antwort1
Dies funktioniert, wenn Sie versuchen, die Zeile beim Wort „und“ zu teilen.
echo "This is to become line 1 and that is line 2" | sed 's/and/\nand/g'
This is to become line 1
and that is line 2
Bitte beachten Sie, dass die Ergebnisse je nach der von Ihnen verwendeten SED-Version unterschiedlich ausfallen können.
AKTUALISIEREN:
Um die Teilung zu erreichen, fügen Sie einfach „\n“ vor dem Begriff/Element ein, das Sie als Anfang der zweiten Zeile verwenden möchten.
echo "Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> " | sed 's/Sun set/\nSun set/'
Sun rise: <...strong...>07:24 am<../..strong..><..br ../..>
Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..>
Antwort2
Ich füge meine persönliche Implementierung mithilfe von hinzu awk
, sodass Sie sie separator
nach Belieben ändern können.
echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}'
Ich bevorzuge immer die Verwendung von awk
Variablen, da diese einfach zu verwenden sind. Wenn Sie Ihre Zeile basierend auf anderenTrennzeichen, können Sie den separator
Wert einfach in einen anderen ändern.
Wenn Sie das aus der zweiten Zeile herausschneiden möchten separator
(ich meine, Sie möchten nicht lesen "und Zeile 2", aber nur "Zeile 2"):
echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'