在我的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.
答案 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