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

时间:2017-01-18 14:42:42

标签: shell sed aix

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

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

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

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

我觉得应该工作的sed命令是:

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

之后我会将tmp.$$移到testfile.txt,但结果会产生以下错误:

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

这完美无缺。结果: $$ TESTFIELD = 01/18/17 13:14:59