Ersetzen von Zeichenfolgen in einem Skript mit sed

Ersetzen von Zeichenfolgen in einem Skript mit sed

Ich bin neu in der Verwendung des sed-Befehls und habe ein SQL, das „MONYY“ enthält, und ich möchte das „MONYY“ in der Datei ändern, indem ich es automatisch durch das aktuelle „MONYY“ ersetze.

Ich habe den folgenden Befehl verwendet und kann den vorherigen Monat und das vorherige Jahr sowie den aktuellen Monat und das aktuelle Jahr in Großbuchstaben abrufen. Jetzt versuche ich, die Werte in meinem Skript mit dem Befehl sed zu ersetzen, aber es passiert nichts.

date1=$ date +"%b%y"|sed 's/\(.*\)/\U\1/'

echo $date1

date2=$ date -d ' -1 month ' +"%b%y"|sed 's/\(.*\)/\U\1/'

echo $date2

sed 's/$date1/$date2/g' aggdom.sql > temp

Kann mir jemand mit dem sed-Befehl helfen, den ich verwende

Antwort1

Das obige Skript ersetzt jedes $date1durch$date2

aber das Ergebnis wird in tempDatei gedruckt

Wenn Sie die Saiten ändern möchten inaggdom.sql

Sie müssen die Zeile etwa so ändern:

sed -i 's/$date1/$date2/g' aggdom.sql 

von sedder Manpage:

-i[SUFFIX], --in-place[=SUFFIX]

         edit files in place (makes backup if extension  supplied).   The
          default  operation  mode  is  to  break symbolic and hard links.
          This can be changed with --follow-symlinks and --copy.

Unter manchen Betriebssystemen müssen Sie -eals Option hinzufügen:

sed -i -e s/$date1/$date2/g aggdom.sql

verwandte Informationen