GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mengganti String Dengan String Yang Mengandung Slash Dengan Sed?

Saya mencari cara untuk mengganti string dalam file dengan string yang berisi garis miring dengan menggunakan sed.

connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"

Hasilnya adalah:

sed: -e Expression #1, Character 32: Unknown option for `s'

Jawaban yang Diterima:

Gunakan karakter lain sebagai pembatas di s perintah:

printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

Atau lepas garis miring dengan ${var//pattern/replacement} ksh93 operator ekspansi parameter (sekarang juga didukung oleh zsh , bash , mksh , yash dan versi terbaru dari busybox sh ).

printf '%sn' "$srcText" | sed "s/XPLACEHOLDERX/${connect////\/}/"

Linux
  1. Bagaimana Cara Mengganti String Dalam File?

  2. Bagaimana Mencapai Portabilitas Dengan Sed -i (Pengeditan di Tempat)?

  3. Bagaimana Cara Menggunakan Sed Untuk Mengganti String Multi-baris?

  1. Bagaimana Cara Menggunakan Sed Atau Ex Untuk Mengganti Blok (Kode multi-baris) Dengan Blok Teks (kode) Baru?

  2. Ganti kata dengan yang lain di bash

  3. Temukan semua file dengan nama yang mengandung string

  1. Cara mengganti string dalam banyak file di baris perintah linux

  2. tr perintah - cara mengganti string \n dengan baris baru yang sebenarnya (\n)

  3. Bagaimana cara mengganti tanda kutip tunggal dengan karakter lain di sed?