使用sed命令更新语句

时间:2016-05-09 19:02:37

标签: bash sed

我已将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

0 个答案:

没有答案