sed funktioniert nicht mit Variablen, um Text in Dateien zu ersetzen

sed funktioniert nicht mit Variablen, um Text in Dateien zu ersetzen

Ich möchte die Zeichenfolge aller in Verzeichnissen vorhandenen JS-Dateien ersetzen

export name="test_user" &&
echo $customerName &&
sed -i -- 's/this.NAME=""/this.NAME=\"'$name'\"/g' *.js

Wenn ich kein Leerzeichen verwende, funktioniert es einwandfrei, aber mit der Zeichenfolge oben schlägt der Befehl fehl

Antwort1

's/this\.NAME=""/this.NAME="'"$name"'"/g'

In Teile zerlegt:

  1. 's/this\.NAME=""/this.NAME="'
  2. "$name", das ist der wichtige Teil: Die Variablenerweiterung muss in Anführungszeichen gesetzt werden.
  3. '"/g'

Wenn Sie außerdem \"bei der Ersetzung „in einfachen Anführungszeichen“ verwenden, würden Sie in das Ergebnis einfügen \"und nicht „ ."

Sie scheinen auch eine Variable namens zu verwenden customerName. Ich gehe davon aus, dass es sich dabei um einen Tippfehler handelt.

Ob das sedvon Ihnen verwendete Programm die von Ihnen gewünschte Bearbeitung direkt vor Ort ermöglicht, weiß ich nicht.

Verwandt:

verwandte Informationen