使用 sed 替換腳本中的字串

使用 sed 替換腳本中的字串

我是使用 sed 命令的新手,我有一個包含“MONYY”的 sql,我想通過自動將其替換為當前的“MONYY”來更改文件中的“MONYY”。

我使用了以下命令,我能夠以大寫形式獲取上個月和年份以及當前月份和年份,現在我嘗試使用 sed 命令替換腳本中的值,但沒有任何反應。

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

誰能幫我解決我正在使用的 sed 命令

答案1

上面的腳本將替換 every$date1$date2

但結果將會列印在temp文件中

如果你想改變字串aggdom.sql

你必須將該行更改為類似的內容:

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

來自sed手冊頁:

-i[字尾], --in-place[=字尾]

         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.

在某些作業系統上,您必須新增 -e作為選項:

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

相關內容