Um eine Zeichenfolge mit einem Trennzeichen mit GNU sed zu teilen, sagen Sie:
sed 's/delimiter/\n/g' # GNU sed
Zum Beispiel zum Teilen mit :
als Trennzeichen:
$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you
Oder mit einem Nicht-GNU-Sed:
$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you
In diesem speziellen Fall haben Sie die g
verpasst nach dem Wechsel. Daher wird es nur einmal gemacht. Siehe:
$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5
g
steht für g
lobal und bedeutet, dass die Ersetzung global, also für jedes Vorkommen, erfolgen muss. Beachten Sie, dass der Standardwert 1 ist und wenn Sie beispielsweise 2 eingeben, wird dies zweimal ausgeführt usw.
Alles in allem müssten Sie in Ihrem Fall Folgendes verwenden:
sed 's/:/\\n/g' ~/Desktop/myfile.txt
Beachten Sie, dass Sie den sed ... file
direkt verwenden können Syntax, statt unnötiger Pipings:cat file | sed
.
Mit \n
in sed
ist nicht tragbar. Die tragbare Art, mit sed
zu tun, was Sie wollen ist:
sed 's/:/\
/g' ~/Desktop/myfile.txt
aber in Wirklichkeit ist das kein Job für sed
jedenfalls ist es der Job tr
wurde erstellt, um Folgendes zu tun:
tr ':' '
' < ~/Desktop/myfile.txt