使用sed替换脚本中的字符串


0

我是使用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命令

Answers:


1

上面的脚本将取代所有的$date1$date2

但结果将打印在temp文件中

如果你想改变字符串 aggdom.sql

你必须改变这样的行:

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

来自sed手册页:

-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.

在某些操作系统上,您必须添加 -e一个选项:

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

你好Networker,你是第一次。我正在尝试将每个$ date1与$ date2放入另一个文件中。但我已经尝试了你提供的命令,但仍然没有在aggdom.sql中找到任何更改。日期保持原样。
user342220 2014年

您正在使用的操作系统
Networker 2014年

我正在使用GNU / Linux
user342220 2014年

即使添加-e也是一样的。有没有其他命令我可以使用而不是sed?
user342220 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.