免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3557 | 回复: 15
打印 上一主题 下一主题

[请教高手]关于处理csv文件,如何将数据中的"变成\" [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-10 17:16 |只看该作者 |倒序浏览
5可用积分
本帖最后由 thursday 于 2012-03-10 17:17 编辑

例如a.csv文件,变换前数据为:
----------------------------
1,"abc",3,4,"a"de","2"
2,"a"e",4,3,"1","a"
----------------------------
要求把字段中的"变成\"
"a"de"  ⇒"a\"de"
"a"e"    ⇒"a\"de"

变换后数据为
----------------------------
1,"abc",3,4,"a\"de","2"
2,"a\"e",4,3,"1","a"
----------------------------

变换的数据量较大,希望最好可以用正则表达式之类的实现,谢谢!

最佳答案

查看完整内容

你注册的时候我连电脑还没摸过呢

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
2 [报告]
发表于 2012-03-10 17:16 |只看该作者
thursday 发表于 2012-03-10 17:43
不好意思,我是新手,以前不是做shell开发的,呵呵
  1. sed 's/\([^,]\)"\([^,]\)/\1\\"\2/g' file
复制代码
你注册的时候我连电脑还没摸过呢

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
3 [报告]
发表于 2012-03-10 17:23 |只看该作者
sed 's/\(\w\)"\(\w\)/\1\\"\2/g'

论坛徽章:
0
4 [报告]
发表于 2012-03-10 17:32 |只看该作者
ziyunfei 发表于 2012-03-10 17:23
sed 's/\(\w\)"\(\w\)/\1\\"\2/g'


我写的是对a.csv进行操作,你这句命令我都没试,因为里面也没写a.csv阿。。。

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
5 [报告]
发表于 2012-03-10 17:34 |只看该作者
thursday 发表于 2012-03-10 17:32
我写的是对a.csv进行操作,你这句命令我都没试,因为里面也没写a.csv阿。。。

我的天呐 后面加上文件名

论坛徽章:
0
6 [报告]
发表于 2012-03-10 17:43 |只看该作者
ziyunfei 发表于 2012-03-10 17:34
我的天呐 后面加上文件名



不好意思,我是新手,以前不是做shell开发的,呵呵


执行前:
----------------
1,"a"b",3,"1",4
3,"a",2,"a"",5
----------------


执行后:
----------------
1,"a\"b",3,"1",4
3,"a",2,"a"",5
----------------

为啥第二行的没给处理阿?

论坛徽章:
0
7 [报告]
发表于 2012-03-10 17:56 |只看该作者
其实是两个需求的

1,先把数据中的\变成\\
2,然后再把数据中的"变成\"
----------------------------------------------------------------------------------------------------------------
原本我想问完第2个,然后自己推写出1,
结果完全看不懂。。。麻烦把1的命令也给写出来贝?3q3q!
----------------------------------------------------------------------------------------------------------------
关于第二个需求,我觉得数据中应该不能出现",这种情况吧,如果出现的话,应该就实现不了转换了吧?

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
8 [报告]
发表于 2012-03-10 18:07 |只看该作者
thursday 发表于 2012-03-10 17:56
其实是两个需求的

1,先把数据中的\变成\\

这样呢,其实标准的csv字段里面还可以有逗号,引号转义是用双引号""
  1. sed 's/\\/\\\\/g;s/\([^,]\)"\([^,]\)/\1\\"\2/g' file
复制代码

论坛徽章:
0
9 [报告]
发表于 2012-03-10 18:24 |只看该作者
对阿,需求就是"先让变成""
然后""在变成\"

然后我直接想吧"变成\"而已,谢谢兄弟!

论坛徽章:
0
10 [报告]
发表于 2012-03-10 18:25 |只看该作者
我怎么把积分给你呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP