我有一个包含3个不同列数据的输出文件 -
['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
我尝试使用下面的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
我的预期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';
有人可以帮我吗?
答案 0 :(得分: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)"'"
}