GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan sed untuk membagi string dengan pembatas

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

Linux
  1. Bagaimana Cara Mengganti String Dalam File?

  2. Menggunakan Notify-send Dengan Cron?

  3. Tambahan Dengan 'sed'?

  1. Bagaimana Mengganti String Dengan String Yang Mengandung Slash Dengan Sed?

  2. Cara Memisahkan String dalam Skrip Bash

  3. ganti teks dengan panjang yang sama menggunakan sed

  1. Menggunakan beberapa pola sekaligus dengan perintah Sed

  2. Menghapus Semua Komentar C Dengan Sed?

  3. Bagaimana cara mengubah file di tempat menggunakan awk? (seperti halnya sed -i)