347 Stimmen

Komma durch Zeilenumbruch in sed unter MacOS ersetzen?

Ich habe eine Datei mit Zeichenfolgen, die durch Kommas getrennt sind. Ich versuche, die Kommas durch eine neue Zeile zu ersetzen. Ich habe es versucht:

sed 's/,/\n/g' file

aber es funktioniert nicht. Was übersehe ich?

2voto

t3az0r Punkte 429

Nur zur Klarstellung: die man-Seite von sed unter OSX (10.8; Darwin Kernel Version 12.4.0) sagt:

[...]

Reguläre Ausdrücke

 The regular expressions used in sed, by default, are basic regular expressions (BREs, see re_format(7) for more information), but extended
 (modern) regular expressions can be used instead if the -E flag is given.  In addition, sed has the following two additions to regular
 expressions:

 1.   In a context address, any character other than a backslash (``\'') or newline character may be used to delimit the regular expression.
      Also, putting a backslash character before the delimiting character causes the character to be treated literally.  For example, in the
      context address \xabc\xdefx, the RE delimiter is an ``x'' and the second ``x'' stands for itself, so that the regular expression is
      ``abcxdef''.

 2.   The escape sequence \n matches a newline character embedded in the pattern space.  You cannot, however, use a literal newline charac-
      ter in an address or in the substitute command.

[...]

also muss man wohl tr - wie oben erwähnt - oder das schicke

sed "s/,/^M
/g"

Hinweis: Sie müssen < eingeben ctrl> -v,< zurück> um '^M' im vi-Editor zu erhalten

2voto

DawnSong Punkte 3836

Les sed auf macOS Mojave wurde 2005 veröffentlicht, daher ist eine Lösung die Installation des gnu-sed ,

brew install gnu-sed

dann verwenden Sie gsed wird tun, was Sie wünschen,

gsed 's/,/\n/g' file

Wenn Sie es vorziehen sed , nur sudo sh -c 'echo /usr/local/opt/gnu-sed/libexec/gnubin > /etc/paths.d/brew' die vorgeschlagen wird durch brew info gnu-sed . Starten Sie Ihr Semester neu, dann wird Ihr sed in der Befehlszeile lautet gsed .

0voto

Jeff LaFay Punkte 12384

FWIW, die folgende Zeile funktioniert unter Windows und ersetzt Semikolons in meinen Pfadvariablen durch einen Zeilenumbruch. Ich verwende die Tools, die in meinem Git-Bin-Verzeichnis installiert sind.

echo %path% | sed -e $'s/;/\\n/g' | less

-1voto

shawon Punkte 666

Ich habe einen anderen Befehl gefunden, der ebenfalls funktioniert.

find your_filename.txt -type f -exec sed -i 's/,/\n/g' {} \;

CodeJaeger.com

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.

Powered by:

X