Per dividere una stringa con un delimitatore con GNU sed si dice:
sed 's/delimiter/\n/g' # GNU sed
Ad esempio, per dividere utilizzando :
come delimitatore:
$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you
O con un sed non GNU:
$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you
In questo caso particolare, hai perso il g
dopo la sostituzione. Quindi, è solo fatto una volta. Vedi:
$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5
g
sta per g
lobal e significa che la sostituzione deve essere effettuata globalmente, cioè per ogni occorrenza. Vedi che il valore predefinito è 1 e se metti per esempio 2, viene fatto 2 volte, ecc.
Tutti insieme, nel tuo caso dovresti usare:
sed 's/:/\\n/g' ~/Desktop/myfile.txt
Nota che puoi usare direttamente il sed ... file
sintassi, invece di piping non necessario:cat file | sed
.
Usando \n
in sed
non è portatile. Il modo portatile per fare quello che vuoi con sed
è:
sed 's/:/\
/g' ~/Desktop/myfile.txt
ma in realtà questo non è un lavoro per sed
comunque, è il lavoro tr
è stato creato per fare:
tr ':' '
' < ~/Desktop/myfile.txt