GNU/Linux >> Tutoriels Linux >  >> Linux

Substitution de variable d'environnement dans sed

En plus de la réponse de Norman Ramsey, j'aimerais ajouter que vous pouvez mettre entre guillemets la chaîne entière (ce qui peut rendre la déclaration plus lisible et moins sujette aux erreurs).

Ainsi, si vous souhaitez rechercher "foo" et le remplacer par le contenu de $BAR, vous pouvez placer la commande sed entre guillemets.

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

Dans le premier, $BAR ne se développera pas correctement tandis que dans le second, $BAR se développera correctement.


Vos deux exemples semblent identiques, ce qui rend les problèmes difficiles à diagnostiquer. Problèmes potentiels :

  1. Vous aurez peut-être besoin de guillemets doubles, comme dans sed 's/xxx/'"$PWD"'/'

  2. $PWD peut contenir une barre oblique, auquel cas vous devez rechercher un caractère pas contenu dans $PWD à utiliser comme délimiteur.

Pour résoudre les deux problèmes à la fois, peut-être

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

Linux
  1. Linux - Variable d'environnement permanente pour tous les utilisateurs ?

  2. Utilisation d'une référence à une variable de chaîne Bash dans Sed ?

  3. Comment supprimer une variable d'environnement exportée ?

  4. Variable d'environnement TERM non définie

  5. Comment utiliser sed pour remplacer la variable d'un fichier de configuration ?

Comment définir une variable d'environnement dans Windows

Comment définir des variables d'environnement dans MacOS

Configurer la connexion à la base de données à l'aide de la variable d'environnement dans les rails

Trucs et astuces pour les variables d'environnement Linux

Comment définir une variable d'environnement dans Bash

Tutoriel Unix Sed :Exemples avancés de substitution Sed