Wie kann ich einen Zeilenumbruch (" \n
") mit einem Leerzeichen (" ") unter Verwendung der sed
Befehl?
Ich habe es erfolglos versucht:
sed 's#\n# #g' file
sed 's#^$# #g' file
Wie kann ich es reparieren?
Wie kann ich einen Zeilenumbruch (" \n
") mit einem Leerzeichen (" ") unter Verwendung der sed
Befehl?
Ich habe es erfolglos versucht:
sed 's#\n# #g' file
sed 's#^$# #g' file
Wie kann ich es reparieren?
Ich hatte dieses Problem. Der Knackpunkt war, dass ich die Lösung brauchte, um auf BSDs (Mac OS X) und GNUs (Linux und Cygwin ) sed
y tr
:
$ echo 'foo
bar
baz
foo2
bar2
baz2' \
| tr '\n' '\000' \
| sed 's:\x00\x00.*:\n:g' \
| tr '\000' '\n'
Ausgabe:
foo
bar
baz
(mit nachgestelltem Zeilenumbruch)
Es funktioniert unter Linux, OS X und BSD - auch ohne UTF-8 Unterstützung oder mit einem miserablen Terminal.
Utilice tr
um den Zeilenumbruch durch ein anderes Zeichen zu ersetzen.
NULL
( \000
ou \x00
) ist gut, weil es keine UTF-8-Unterstützung braucht und wahrscheinlich auch nicht verwendet wird.
Utilice sed
um die NULL
Utilice tr
um zusätzliche Zeilenumbrüche zu ersetzen, wenn Sie sie benötigen
Die Antwort mit dem Etikett :a ...
Wie kann ich einen Zeilenumbruch ( \n ) mit sed?
... funktioniert in freebsd 7.2 nicht auf der Kommandozeile:
( echo foo ; echo bar ) | sed ':a;N;$!ba;s/\\n/ /g'
sed: 1: ":a;N;$!ba;s/\\n/ /g": unused label 'a;N;$!ba;s/\\n/ /g'
foo
bar
Aber wenn Sie das sed-Skript in eine Datei schreiben oder -e verwenden, um das sed-Skript zu "bauen"...
\> (echo foo; echo bar) | sed -e :a -e N -e '$!ba' -e 's/\\n/ /g'
foo bar
oder ...
> cat > x.sed << eof
:a
N
$!ba
s/\n/ /g
eof
> (echo foo; echo bar) | sed -f x.sed
foo bar
Vielleicht ist das sed in OS X ähnlich.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.