Para dividir una cadena con un delimitador con GNU sed, diga:
sed 's/delimiter/\n/g' # GNU sed
Por ejemplo, para dividir usando :
como delimitador:
$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you
O con un sed que no sea GNU:
$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you
En este caso particular, te perdiste el g
después de la sustitución. Por lo tanto, solo se hace una vez. Ver:
$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5
g
significa g
lobal y significa que la sustitución se tiene que hacer globalmente, es decir, para cualquier ocurrencia. Mira que por defecto es 1 y si pones por ejemplo 2 se hace 2 veces, etc.
En total, en su caso necesitaría usar:
sed 's/:/\\n/g' ~/Desktop/myfile.txt
Tenga en cuenta que puede usar directamente el sed ... file
sintaxis, en lugar de tuberías innecesarias:cat file | sed
.
Usando \n
en sed
no es portátil. La forma portátil de hacer lo que quieras con sed
es:
sed 's/:/\
/g' ~/Desktop/myfile.txt
pero en realidad este no es un trabajo para sed
de todos modos, es el trabajo tr
fue creado para hacer:
tr ':' '
' < ~/Desktop/myfile.txt