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?

17voto

Offensichtlich \r ist der Schlüssel!

$ sed 's/, /\r/g' file3.txt > file4.txt

Verwandelte dies:

ABFS, AIRM, AMED, BOSC, CALI, ECPG, FRGI, GERN, GTIV, HSON, IQNT, JRCC, LTRE,
MACK, MIDD, NKTR, NPSP, PME, PTIX, REFR, RSOL, UBNT, UPI, YONG, ZEUS

Zu diesem:

ABFS
AIRM
AMED
BOSC
CALI
ECPG
FRGI
GERN
GTIV
HSON
IQNT
JRCC
LTRE
MACK
MIDD
NKTR
NPSP
PME
PTIX
REFR
RSOL
UBNT
UPI
YONG
ZEUS

15voto

Ramon Rey Punkte 171

Dies funktioniert unter MacOS Mountain Lion (10.8), Solaris 10 (SunOS 5.10) und RHE Linux (Red Hat Enterprise Linux Server Version 5.3, Tikanga)...

$ sed 's/{pattern}/\^J/g' foo.txt > foo2.txt

... wo die ^J erfolgt durch die Durchführung ctrl + v + j . Achten Sie auf die \ vor der ^J .

PS, ich weiß, dass das sed in RHEL GNU ist, das MacOS sed basiert auf FreeBSD, und obwohl ich mir bei dem Solaris sed nicht sicher bin, glaube ich, dass dies mit so ziemlich jedem sed funktioniert. YMMV tho'...

7voto

ryenus Punkte 13738

Der Vollständigkeit halber: Das funktioniert auch:

echo "a,b" | sed "s/,/\\$(echo -e '\n\r')/"

4voto

user2300875 Punkte 519

Ich bin zwar spät dran mit diesem Beitrag, aber ich aktualisiere gerade meine Erkenntnisse. Diese Antwort ist nur für Mac OS X.

$ sed 's/new/
> /g' m1.json > m2.json
sed: 1: "s/new/
/g": unescaped newline inside substitute pattern

Im obigen Befehl habe ich versucht, mit Shift+Enter eine neue Zeile einzufügen, was nicht funktionierte. Also habe ich es dieses Mal mit "escaping" versucht, um den "unescaped newline", wie in der Fehlermeldung angegeben, einzufügen.

$ sed 's/new/\
> /g' m1.json > m2.json 

Es hat geklappt! (unter Mac OS X 10.9.3)

3voto

$ echo $PATH | sed -e $'s/:/\\\n/g' 
/usr/local/sbin
/Library/Oracle/instantclient_11_2/sdk
/usr/local/bin

...

Funktioniert bei mir unter Mojave

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