免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: voipexplore
打印 上一主题 下一主题

请教:csv文件中的双引号和逗号处理 [复制链接]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
11 [报告]
发表于 2009-02-27 21:25 |只看该作者

回复 #10 voipexplore 的帖子

从你给的例子可以看出,不是所有的列都有"",如果有连续2列不带""的话,haimming 兄的这个就会有问题。

论坛徽章:
0
12 [报告]
发表于 2009-02-27 21:26 |只看该作者
@haimming
认真看了下 还是不对的 那个双引号不一定有的 所以不能简单的去掉逗号 然后把双引号作为逗号使用

论坛徽章:
0
13 [报告]
发表于 2009-02-27 21:28 |只看该作者
原帖由 ly5066113 于 2009-2-27 21:12 发表
sed -r ':a;s/("[^"]+),([^"]+")/\1\2/g;ta;s/[" \t]//g' urfile

这里为什么要用蓝色的"g",好象没用,请解释一下好吗?

[ 本帖最后由 dream3401 于 2009-2-27 21:33 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-02-27 21:32 |只看该作者

回复 #11 ly5066113 的帖子

回复 #12 voipexplore 的帖子

确实如此,如果格式稍有不同可能就会有问题,之前也想过tim兄的那种,没弄出来

算我骗分了, 本周灌水不扣分

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
15 [报告]
发表于 2009-02-27 21:37 |只看该作者

回复 #13 dream3401 的帖子

看似没用,但其实可以减少ta的循环次数

论坛徽章:
0
16 [报告]
发表于 2009-02-27 21:41 |只看该作者
原帖由 ly5066113 于 2009-2-27 21:37 发表
看似没用,但其实可以减少ta的循环次数

不好意思,刚才还发短消息给你
讨论:
就是不解为何会减少ta的次数,如果都全局替换了(文中有两个地方要替换),为何又要用ta,还是不解,请多讲讲

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
17 [报告]
发表于 2009-02-27 21:47 |只看该作者

回复 #16 dream3401 的帖子

对于这种 "    13,459,138" 双引号内有多个 , 的情况
s/("[^"]+),([^"]+")/\1\2/g 只能去掉其中的一个,所以需要ta的循环

论坛徽章:
0
18 [报告]
发表于 2009-02-27 21:49 |只看该作者
原帖由 ly5066113 于 2009-2-27 21:47 发表
对于这种 "    13,459,138" 双引号内有多个 , 的情况
s/("[^"]+),([^"]+")/\1\2/g 只能去掉其中的一个,所以需要ta的循环

谢谢,由于没有看见"..."里多个,的情况,呵呵

论坛徽章:
0
19 [报告]
发表于 2009-02-27 22:24 |只看该作者
苦思冥想awk的解法,觉得gensub函数应该可以,但还没弄透gensub

[ 本帖最后由 ywlscpl 于 2009-2-27 22:25 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2009-09-29 15:59 |只看该作者
把这个帖子顶起来,也碰到了类似的问题。
ly5066113 ,的解法。
似乎无法解决",,aaa,b,,a"
这样的情况
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP