SED

2016-05-12 15 views
0

を使用してupdateコマンドを準備、私は以下のsedコマンド -SED

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

のp-/O

私の予想で試してみました

  ['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 

データ - 3異なる列を含む出力ファイルを持っています

 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'; 

誰でも私を助けることができますか?

+4

これは 'sed'ことがありますか? – cdarke

+0

@ cdarke-実際にsedを使って文字列を解析しています。期待された出力は得られませんでした。私にこれを提案してもらえますか? – saurav

+0

予想される出力結果を更新しました。誰かが私を助けることができます – saurav

答えて

3
sed

ないが、カンマで区切られたデータに私にawkを求め等しい:)

#!awk 
BEGIN { FS = "," } # split fields on comma 
{ 
    gsub(/[\]\[\"]/,"") # remove useless chars: [,]," 
    i=1 
    crefs="{" 
    while (i <= (NF-2)) { # loop from first to 3rd last field 
     tmp = $(i) ? $(i) : "''" # if no value, add empty quotes 
     crefs=crefs""tmp":''," # append current field value or empty to crefs 
     i++ 
    } 
    sub(/,$/, "", crefs) # remove trailing comma 
    crefs=crefs"}" 
    print "update table set cross_refs ="crefs" where id='"$(NF-1)"' and effective_date ='"$(NF)"'" 
} 
+0

ありがとうございます – saurav