Untuk memisahkan string dengan pembatas dengan GNU sed Anda mengatakan:
sed 's/delimiter/\n/g' # GNU sed
Misalnya untuk membagi menggunakan :
sebagai pembatas:
$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you
Atau dengan sed non-GNU:
$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you
Dalam kasus khusus ini, Anda melewatkan g
setelah substitusi. Makanya, cukup dilakukan sekali saja. Lihat:
$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5
g
singkatan dari g
global dan berarti substitusi harus dilakukan secara global, yaitu untuk setiap kejadian. Lihat bahwa standarnya adalah 1 dan jika Anda memberi contoh 2, itu dilakukan 2 kali, dll.
Secara keseluruhan, dalam kasus Anda, Anda perlu menggunakan:
sed 's/:/\\n/g' ~/Desktop/myfile.txt
Perhatikan bahwa Anda dapat langsung menggunakan sed ... file
sintaks, alih-alih perpipaan yang tidak perlu:cat file | sed
.
Menggunakan \n
di sed
tidak portabel. Cara portabel untuk melakukan apa yang Anda inginkan dengan sed
adalah:
sed 's/:/\
/g' ~/Desktop/myfile.txt
namun kenyataannya ini bukan pekerjaan untuk sed
lagi pula, itu adalah pekerjaan tr
dibuat untuk melakukan:
tr ':' '
' < ~/Desktop/myfile.txt