【发布时间】:2017-06-03 00:02:33
【问题描述】:
在我的 Unix AIX 中,我需要使用将从 PowerCenter 运行会话后的 shell 脚本将参数文件中的日期替换为系统日期。
我可以使用 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.
【问题讨论】:
-
请注意,您使用的是双引号,因此
sed -e "s..."将$$TESTFIELD扩展为它的值。 -
您可能还想看看How to change date format in sed?,了解如何从
sed中执行外部命令。基本上,您需要使用-e标志。 -
也许:
Now=$(date +"%D %T"); sed "s,=.*$,=$Now," testfile.txt >>tmp.$$