用系统日期替换参数文件中的日期

Replace date in a parameter file with system date

在我的 Unix AIX 中,我需要使用 shell 脚本将参数文件中的日期替换为系统日期,该脚本将 运行 post 来自 PowerCenter 的会话。

我可以使用 SED 来替换字符串变量,但是 运行使用日期会遇到问题。

我试过使用逗号而不是斜杠作为分隔符。测试文件的内容如下所示:

$$TESTFIELD=12/29/2016 14:57:51

我认为应该起作用的 sed 命令是:

sed -e "s,^\($$TESTFIELD=\).*,'date +"%D %T"'," testfile.txt > tmp.$$

之后我将 tmp.$$ 移动到 testfile.txt 但结果抛出以下错误:

sed: 0602-404 Function s,^\(14680298TESTFIELD=\).*,'date +%D cannot be parsed.

您需要在sed命令中使用单引号或转义$。否则 shell 会扩展 $TESTFIELD。在这种情况下我推荐第一个:

sed -e 's,^\($$TESTFIELD=\).*,'\''date +"%D %T"'\'','

你的问题不太清楚。如果要用当前日期时间替换文件中的日期时间,请使用:

sed -e 's,^\($$TESTFIELD=\).*,'"$(date +"%D %T")"','
sed -e 's,^\($$TESTFIELD=\).*,'"$(date +"%D %T")"','

这非常有效。结果: $$TESTFIELD=01/18/17 13:14:59