- 論壇徽章:
- 0
|
這個(gè)問(wèn)題好難。我只能用awk來(lái)解,而且解得蠻復(fù)雜的。
處理過(guò)程如下:
1. 確定本列長(zhǎng)度大于0;將本列存到s1,并在最后補(bǔ)上一個(gè)","
2. 如果s1的長(zhǎng)度大于0:
3. 如果s1第一個(gè)字元是引號(hào)("),則去掉第一個(gè)字元,找到分隔符號(hào)(",),輸出此欄,并自s1中刪除此欄位資料(含結(jié)尾的",)
4. 如果s1第一個(gè)字元不是引號(hào)("),則找到分隔符號(hào)(,),輸出此欄,并自s1中刪除此欄位資料(含結(jié)尾的,)
5. 再回到步驟2
awk script如下(假設(shè)存在擋案tmp1.awk):
length($0) > 0 {
s1 = $0 ",";
while (length(s1) > 0) {
c1 = substr(s1, 1, 1);
if (c1 == "\"") {
sub(/\"/, "", s1);
i1 = index(s1, "\",");
print "\"" substr(s1, 1, i1);
sub(/^[^\"]*\",/, "", s1);
} else {
i1 = index(s1, ",");
print substr(s1, 1, i1-1);
sub(/^[^,]*,/, "", s1);
}
}
}
以樓主的sample來(lái)執(zhí)行及結(jié)果:
$ echo '1,"A","A B","A C","A,D"' | awk -f tmp1.awk
1
"A"
"A B"
"A C"
"A,D"
[ 本帖最后由 czcjinu 于 2009-12-1 20:46 編輯 ] |
|