免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎样将一批文件中双引号之间的逗号替换为加号? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-02-26 22:11 |只看该作者 |倒序浏览
原始文件:
afg2455y,0,tyytyhth,"twgt,e90heh,rhyrt",reg67u,"g4g4t,6",rrrrr
afg2455y,0,2334,"twgt,e90heh,rhyrt",reg

替换后的要的效果:
afg2455y,0,tyytyhth,"twgt+e90heh+rhyrt",reg67u,"g4g4t+6",rrrrr

afg2455y,0,2334,"twgt+e90heh+rhyrt",reg

------------------------------------------

awk 或者sed 怎么写呢?

论坛徽章:
0
2 [报告]
发表于 2019-02-27 00:43 |只看该作者
本帖最后由 jzsjm1002 于 2019-02-27 13:40 编辑

sed -r ':a;s/"([^,"]+),/"\1+/;ta'
awk '{while(/"[^,"]+,/) $0=gensub(/("[^,"]+),/,"\\1+","1")}1'

论坛徽章:
0
3 [报告]
发表于 2019-02-27 11:03 |只看该作者
双引号是两两成对吗?
awk 'BEGIN{FS=OFS="\""} {for (i=2; i<NF; i+=2) gsub(/,/,"+",$i); print $0}'

sed,不会。
sed ':1 s/\("[^"]*\),\([^"]*"\)/\1\+\2/g; t1'     会处理所有在“之间的数据

论坛徽章:
0
4 [报告]
发表于 2019-02-27 14:47 |只看该作者
双引号是两两成对的回复 3# allenshen_99


论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
5 [报告]
发表于 2019-03-07 14:37 |只看该作者
  1. [root@k8s_m_110 tmp]# awk  'BEGIN{FS=OFS="\""}{for(i=1;i<=NF;i++){if(i%2==0){gsub(",","+",$i)}}}$0=$0' aa.log
  2. afg2455y,0,tyytyhth,"twgt+e90heh+rhyrt",reg67u,"g4g4t+6",rrrrr
  3. afg2455y,0,2334,"twgt+e90heh+rhyrt",reg
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP