Pour diviser une chaîne avec un délimiteur avec GNU sed, vous dites :
sed 's/delimiter/\n/g' # GNU sed
Par exemple, pour diviser en utilisant :
comme délimiteur :
$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you
Ou avec un sed non-GNU :
$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you
Dans ce cas particulier, vous avez raté le g
après le remplacement. Par conséquent, cela ne se fait qu'une seule fois. Voir :
$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5
g
signifie g
lobal et signifie que la substitution doit être effectuée globalement, c'est-à-dire pour toute occurrence. Voyez que la valeur par défaut est 1 et si vous mettez par exemple 2, cela se fait 2 fois, etc.
Tous ensemble, dans votre cas, vous auriez besoin d'utiliser :
sed 's/:/\\n/g' ~/Desktop/myfile.txt
Notez que vous pouvez directement utiliser le sed ... file
syntaxe, au lieu de tubes inutiles :cat file | sed
.
Utilisation de \n
en sed
n'est pas portable. Le moyen portable de faire ce que vous voulez avec sed
est :
sed 's/:/\
/g' ~/Desktop/myfile.txt
mais en réalité ce n'est pas un travail pour sed
de toute façon, c'est le travail tr
a été créé pour faire :
tr ':' '
' < ~/Desktop/myfile.txt