GNU/Linux >> Linux Esercitazione >  >> Linux

Slash e backslash in Sed?

Questa domanda ha già risposte qui :Quali caratteri devo sfuggire quando utilizzo sed in uno script sh?

(4 risposte)
Chiuso 5 anni fa.

Voglio usare sed per trasformare una barra in una barra rovesciata e una barra, ad esempio / -> / . Ma non funziona. Ecco un piccolo esempio:

#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s///\//g"

L'output delle prime tre righe è quello presupposto. Ma l'ultimo non funziona. Come mai? Come correggere l'ultima parte?

Risposta accettata:

Usa virgolette singole per l'espressione che hai usato:

sed 's///\//g'

Tra virgolette, ha un significato speciale, quindi devi eseguire il backslash:

sed "s///\\//g"

Ma è più pulito cambiare il delimitatore:

sed 's=/=\/=g'
sed "s=/=\/=g"

Linux
  1. Qual è la differenza tra $ (roba) e `roba`?

  2. Come sostituire una stringa con una stringa contenente una barra con Sed?

  3. ${!foo} E Zsh?

  4. Script di shell con funzione e parametro come variabili?

  5. Colorare l'output della coda con Sed?

Manipolazione del testo con sed e grep

Anteporre e aggiungere una stringa a ogni elemento di $* in Shell?

Codificare il contenuto del file e farlo eco come una riga?

16 Esempi pratici e utili di Echo Command in Linux

Come utilizzare Sed per trovare e sostituire una stringa in un file

Ripristino di stdout e stderr al valore predefinito