GNU/Linux >> Belajar Linux >  >> Linux

sed dengan string literal - bukan file input

Bekerja seperti yang Anda inginkan:

echo "A,B,C" | sed s/,/\',\'/g

Versi saya menggunakan variabel dalam skrip bash:

Temukan garis miring terbalik dan ganti dengan garis miring ke depan:

input="This has a backslash \\"

output=$(echo "$input" | sed 's,\\,/,g')

echo "$output"

Anda memiliki konflik tanda kutip tunggal, jadi gunakan:

 echo "A,B,C" | sed "s/,/','/g"

Jika menggunakan bash, Anda juga dapat melakukannya (<<< adalah here-string ):

sed "s/,/','/g" <<< "A,B,C"

tapi tidak

sed "s/,/','/g"  "A,B,C"

karena sed mengharapkan file sebagai argumen

EDIT :

jika Anda menggunakan ksh atau yang lainnya :

echo string | sed ...

Linux
  1. Peringatan dengan nftw

  2. Tambahkan baris ke file /etc/hosts dengan skrip Shell

  3. gema teks dengan baris baru di bash

  1. Bekerja dengan Input Output dan Error Redirection di Linux

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

  3. ganti baris dalam satu file dengan baris lain dengan nomor baris

  1. Tambahan Dengan 'sed'?

  2. Linux - Argumen Pasangan Paralel Gnu Dengan Argumen Input File?

  3. Mewarnai Keluaran Ekor Dengan Sed?