GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ersetzung von Umgebungsvariablen in sed

Zusätzlich zu Norman Ramseys Antwort möchte ich hinzufügen, dass Sie die gesamte Zeichenfolge in doppelte Anführungszeichen setzen können (was die Anweisung möglicherweise besser lesbar und weniger fehleranfällig macht).

Wenn Sie also nach 'foo' suchen und es durch den Inhalt von $BAR ersetzen möchten, können Sie den sed-Befehl in doppelte Anführungszeichen setzen.

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

Im ersten wird $BAR nicht korrekt erweitert, während im zweiten $BAR korrekt erweitert wird.


Ihre beiden Beispiele sehen identisch aus, was die Diagnose von Problemen erschwert. Mögliche Probleme:

  1. Möglicherweise benötigen Sie doppelte Anführungszeichen, wie in sed 's/xxx/'"$PWD"'/'

  2. $PWD kann einen Schrägstrich enthalten, in diesem Fall müssen Sie nicht ein Zeichen finden enthalten in $PWD als Trennzeichen verwenden.

Um beide Probleme gleichzeitig zu treffen, vielleicht

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

Linux
  1. Linux – Permanente Umgebungsvariable für alle Benutzer?

  2. Verwenden einer Referenz auf eine Bash-String-Variable in Sed?

  3. Wie lösche ich eine exportierte Umgebungsvariable?

  4. Umgebungsvariable TERM nicht gesetzt

  5. Exit-Code der Variablenzuweisung zur Befehlsersetzung in Bash

So legen Sie die Umgebungsvariable in Windows fest

So legen Sie Umgebungsvariablen in MacOS fest

Konfigurieren Sie die Datenbankverbindung mithilfe der Umgebungsvariablen in Rails

So setzen Sie die Umgebungsvariable in Bash

Unix-Sed-Tutorial:Fortgeschrittene Sed-Ersetzungsbeispiele

Ein Array kann nicht als Umgebungsvariable verwendet werden