Solaris上的sed命令

时间:2017-10-30 07:14:43

标签: unix sed solaris quoting

我正在尝试执行以下命令,用从shell脚本传递的值替换SQL中的变量,但每次我收到与

相同的错误
  

sed:命令乱码

argv[0]

请你帮帮我吧。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我已按以下方式调整了您的sed命令:

sed -e "s/\${BATCH_ID}/${BATCH_ID}/g; s/\${LOAD_DATE}/TO_DATE(${LOAD_DATE},'YYYY-MM-DD')/g" ${sqlFile}  >> ${SQL_DIR}/fmv_media_premise_ucg_update_temp.sql

它将用BATCH_ID变量中包含的值替换所有出现的$ {BATCH_ID},并将所有$ {LOAD_DATE}更改为TO_DATE(LOAD_DATE中包含的值,'YYYY-MM-DD'),我希望这有助于您!干杯

您要将sed命令的输出附加到fmv_media_premise_ucg_update_temp.sql文件,您确定不应该完全替换它吗?如果是这种情况,只需使用>而不是>>

答案 1 :(得分:0)

你有envsubst吗?这将为您提供

envsubst < "${sqlFile}"

这比

更好
source <(echo "echo \"$(< ${sqlfile})\"")

最后一个会扩展更多的东西。