GNU/Linux >> Belajar Linux >  >> Linux

Melarikan Diri dari Blackslash Di Sed?

Saya mencoba menulis perintah sed untuk mengganti baris dalam file. Penggantian sed membutuhkan direktori kerja saat ini, yang mulai membuat perintah sedikit berantakan karena karakter yang perlu diloloskan.

Inilah yang saya miliki sejauh ini:

sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf

Namun ini memberi saya kesalahan dengan sed.

Saya telah mencoba memecahnya menjadi perintah yang lebih mudah:

[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project

Ini mengembalikan apa yang saya inginkan, tetapi ketika saya mencoba menambahkan substitusi perintah, gagal:

[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'

Bantuan apa pun akan dihargai

Jawaban yang Diterima:

Jika saya membacanya dengan benar, Anda mencoba mengganti garis miring (/ ) dengan garis miring lolos (\/ )? Ini mendapat banyak lebih mudah ditangani jika Anda tidak menggunakan / sebagai pembatas Anda di sed :

~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username

Linux
  1. Bagaimana Cara Mengganti String Dalam File?

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

  3. Tambahan Dengan 'sed'?

  1. Bisakah Sed Mengganti Karakter Baris Baru?

  2. Slash Dan Backslash Di Sed?

  3. sed Contoh Perintah di Linux

  1. sed:perintah tidak ditemukan

  2. sed menggabungkan garis bersama

  3. Apakah ada 'git sed' atau yang setara?