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';
누구든지 이 문제를 해결하도록 도와줄 수 있나요?
답변1
글쎄, 당신은 이것을 할 수 있습니다 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 "';\
"
}