Chinaunix
标题:
字符串分隔问题!!
[打印本页]
作者:
DIYBYPERL
时间:
2012-07-18 12:36
标题:
字符串分隔问题!!
1,"FenAiXing","M"
2,"ZhangXueJiao","F"
3,"YeHongBO","M"
4,"oK","O"
5,"J""TOM","M"
6,"J,Tom",
6,"J,Tom"," "
复制代码
以上是DB2 import 出来的表数据,共三个字段,以逗号作为分隔的,但如果字段本身有逗号的则在引号里仍以逗号本身出现。
现在想把每条数据重新分隔成三个字段,对每个字段作处理,问题是字段本身里也有逗号所以不知用SHELL有什么好的办法??
作者:
personball
时间:
2012-07-18 12:58
本帖最后由 personball 于 2012-07-18 12:59 编辑
回复
1#
DIYBYPERL
personball@vostro:~$echo '6,"J,Tom",""'|sed 's/,\"/-\"/g'
6-"J,Tom"-""
personball@vostro:~$
复制代码
将分隔符 , 换 成 -
另,DB2导出数据时候不能自定义分隔符?
作者:
rucypli
时间:
2012-07-18 13:23
这不已经分割成三个字段了 怎么还需要重新分吗
作者:
zooyo
时间:
2012-07-18 13:44
提示:
作者被禁止或删除 内容自动屏蔽
作者:
dn833
时间:
2012-07-18 13:56
[root@182 name]# cat file
1,"FenAiXing","M"
2,"ZhangXueJiao","F"
3,"YeHongBO","M"
4,"oK","O"
5,"J""TOM","M"
6,"J,Tom",
7,"J,Tom"," "
[root@182 name]# sed '/[^"]$/s/$/""/;s/,"/\t/g;s/"\t/\t/g;s/"$//' file |column -t
1 FenAiXing M
2 ZhangXueJiao F
3 YeHongBO M
4 oK O
5 J""TOM M
6 J,Tom
7 J,Tom
复制代码
不知道这样能否满足。前提条件是数据库字段里没有\t制表符就行
作者:
zooyo
时间:
2012-07-18 14:01
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yinyuemi
时间:
2012-07-18 14:03
回复
1#
DIYBYPERL
$ echo '1,"FenAiXing","M"
2,"ZhangXueJiao","F"
3,"YeHongBO","M"
4,"oK","O"
5,"J""TOM","M"
6,"J,Tom",
6,"J,Tom"," "' |awk -F, '{for(i=1;i<=NF;i++){if(gsub(/"/,"&",$i)%2){j++;printf $i (j%2?",":"\t")}else{printf $i"\t"}};print "";j=0}'
1 "FenAiXing" "M"
2 "ZhangXueJiao" "F"
3 "YeHongBO" "M"
4 "oK" "O"
5 "J""TOM" "M"
6 "J,Tom"
6 "J,Tom" " "
复制代码
作者:
DIYBYPERL
时间:
2012-07-20 16:08
解决了,谢谢大家
使用的是yinyuemi的方法。。
作者:
w630866139
时间:
2012-07-20 16:56
[root@localhost ~]# cat char | sed 's/,"/ "/g' | sed 's/",/" /g' > char1
[root@localhost ~]# cat char1
1 "FenAiXing" "M"
2 "ZhangXueJiao" "F"
3 "YeHongBO" "M"
4 "oK" "O"
5 "J""TOM" "M"
6 "J,Tom"
6 "J,Tom" " "
复制代码
有点取巧了
只要是以引号开头或者结尾的逗号都给替换成空格
作者:
DIYBYPERL
时间:
2012-07-20 17:17
本帖最后由 DIYBYPERL 于 2012-07-20 17:18 编辑
回复
9#
w630866139
DB2 导出的数据中可能会出现下面这种数据的(三个字段):
1,"TOM"",""","M"
也就是当字段中有"时,导出为""
作者:
dahaoshanhe
时间:
2012-07-21 10:10
awk '{gsub(/,"/," ",$0); gsub(/"/," ",$0)}1' file
复制代码
作者:
blackold
时间:
2012-07-21 20:13
awk -F\" -v OFS=\" '{for(i=1;i<=NF;i+=2)gsub(/,/," ",$i)}1' urfile
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2