Preparar comando de atualização usando sed

0

Eu tenho um arquivo de saída que contém 3 dados de coluna diferentes -

          ['AARF'],SAMPLE12,2016-01-05 12:00:00-0500
                  ,529OFFST,2015-04-16 08:04:21-0400
          "['EPROSP_IWS', '648099_EPROSP_IWS']",4.NDR-IWS-EPRO,2015-04-16 08:04:21-0400

Eu tentei com o comando abaixo sed -

        sed -i "s/\(\"*\[[^]]*\]\"*\)\(.*\)/{:\"\"}/" tempFile
        sed "s/' *, *'/' '/g;s/\([^,]*\),\([^,]*\),\(.*\)/update table set cross_refs =  where id =  and effective_date = /;s/' '/','/g" tempFile > updatestmt.cql
        sed -i "s/$/';/" updatestmt.cql

Meu esperado o / p -

       update table set cross_refs ={'AARF':''}  where id = 'SAMPLE12' and effective_date = '2016-01-05 12:00:00-0500';
       update table set cross_refs = {'':''}  where id = '529OFFST' and effective_date = '22016-01-05 12:00:00-0500';
       update table set cross_refs = {'EPROSP_IWS':'','648099_EPROSP_IWS':''} where id = '4.NDR-IWS-EPRO' and effective_date = '2015-04-16 08:04:21-0400';

Alguém pode me ajudar nisso?

    
por saurav 12.05.2016 / 19:23

1 resposta

1

Bem, você poderia fazer isso em awk :

BEGIN { FS="," }
{
    date=$NF
    id=$(NF-1)
    sub(/^ */, "", $1)
    sub(/"?\[/, "", $1)
    sub(/\]"?/, "", $(NF-2))
    ref = $1
    for (i=2; i < NF-1; i++) {
        ref = ref ":''," $(i)
    }
    if (!ref) { ref = "''" }
    print "update table set cross_refs={" ref ":''} where id='" id "' and effective_date = '" date "';\
"
}
    
por 13.05.2016 / 12:38