我已将3列数据复制到文件中 -
echo "copy admin.product (old_column, id, date) to 'updateStatement.cql';" > copyInputs.cql
我的o / p文件是这样的 - ,4.IM-H-506X,2016-01-01 11:07:27-0500 ['LOWERCASETEST7'],JASONTEST7,2015-04-19 00:00:00-0400 “['EPROSP_IWS','648099_EPROSP_IWS']”,4.NDR-IWS-EPRO,2015-04-16 08:04:21-0400
因为我新添加的数据类型为map的列数据所以我使用sed命令改变了我的第一列{'my_old_column':''}格式 -
sed "s/\(\"*\[[^]]*\]\"*\)\(.*\)/{\1:\"\"}\2/" tempFile
我在tempfile中得到了所需的o / p -
,4.SMA-LCC-TERM,2015-02-19 00:00:00-0500
{"['IWSSTMT', 'IWSSTMTI', 'EDEL_STMT_IWS']":""},4.IWS-ESTMT-NDR,2015-04-16 08:04
{['RTS2']:""},MS2,2015-05-14 12:20:00-0400
现在我再次使用sed命令来准备更新语句,但是o / p没有正常进行。我猜sed中表达式不正确。
sed "s/' *, *'/' '/g;s/\({^,}*\),\([^,]*\),\(.*\)/update table set my_new_column = \1 where id = \2 and date = \3/;s/' '/','/g" tempFile > updatestmt.cql
预期o / p -
update table set my_new_column = {"['IWSSTMT', 'IWSSTMTI', 'EDEL_STMT_IWS']":""} where id = 4.IWS-ESTMT-NDR and date = 2015-04-16 08:04