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 $date1
durch$date2
aber das Ergebnis wird in temp
Datei 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 sed
der 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 -e
als Option hinzufügen:
sed -i -e s/$date1/$date2/g aggdom.sql