GNU/Linux >> Linux Esercitazione >  >> Linux

Sostituzione delle variabili d'ambiente in sed

Oltre alla risposta di Norman Ramsey, vorrei aggiungere che puoi citare due volte l'intera stringa (il che potrebbe rendere l'affermazione più leggibile e meno soggetta a errori).

Quindi, se vuoi cercare 'foo' e sostituirlo con il contenuto di $BAR, puoi racchiudere il comando sed tra virgolette.

sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"

Nel primo, $BAR non si espanderà correttamente mentre nel secondo $BAR si espanderà correttamente.


I tuoi due esempi sembrano identici, il che rende i problemi difficili da diagnosticare. Potenziali problemi:

  1. Potresti aver bisogno di virgolette doppie, come in sed 's/xxx/'"$PWD"'/'

  2. $PWD può contenere una barra, nel qual caso devi trovare un carattere not contenuto in $PWD da usare come delimitatore.

Per inchiodare entrambi i problemi contemporaneamente, forse

sed '[email protected]@'"$PWD"'@'

Linux
  1. Suggerimenti e trucchi per le variabili di ambiente Linux

  2. Caratteri consentiti nei nomi delle variabili di ambiente Linux

  3. Come posso eliminare una variabile di ambiente esportata?

  4. Come usare sed per sostituire la variabile di un file di configurazione?

  5. Impossibile utilizzare un array come variabile di ambiente

Come impostare la variabile d'ambiente in Windows

Come impostare le variabili d'ambiente in MacOS

Configura la connessione al database utilizzando la variabile di ambiente in Rails

Come impostare la variabile d'ambiente in Bash

Utilizzando un riferimento a una variabile di stringa Bash in Sed?

Tutorial Unix Sed:esempi di sostituzione Sed avanzati