用系统日期替换参数文件中的日期
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
在我的 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