使用 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

上面的脚本将会$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

相关内容