免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2224 | 回复: 18

[文本处理] 字段中包含双引号取不出来 [复制链接]

论坛徽章:
0
发表于 2017-05-22 13:29 |显示全部楼层
本帖最后由 oracle26 于 2017-05-22 13:54 编辑

文本格式:

aa,bb,"cc,dd,ee",ff,gg
11,22,"44,55",66,77
AA,BB,CC,DD,EE
FF,GG,HH,II,JJ
KK,LL,"MM",NN,OO

要的到的结果:

aa cc,dd,ee gg
11 44,55 77
AA CC EE
FF HH JJ
KK MM OO

求大神帮忙看看,如何把双引号中的当做一列啊

论坛徽章:
0
发表于 2017-05-22 13:34 |显示全部楼层
去以逗号分的第一列和第三列和第五列,但第3列里面有些有逗号,所以去不完整,咋整?

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2017-05-22 14:42 |显示全部楼层
如果你有 awk 4.x 可以用 FPAT 来实现
http://bbs.chinaunix.net/thread-4125586-1-1.html

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
发表于 2017-05-22 14:42 |显示全部楼层
awk -F ',' '{match($0,/".+"/,arr);if( RSTART==0) {arr[0]=$3;}else {gsub("\"","",arr[0])}; print $1,arr[0],$NF;}' ufile

论坛徽章:
0
发表于 2017-05-22 15:31 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-05-22 16:10 |显示全部楼层
回复 1# oracle26

awk 3.0 solution

$ awk -f get_csv.awk FILE
aa cc,dd,ee gg
11 44,55 77
AA CC EE
FF HH JJ
KK MM OO


$ cat get_csv.awk
BEGIN{
  FS=","
}
function get_csv(c,n,q){
  #print "NF = ", NF
  c = 0
  for (n = 1; n <= NF; ++n) {
    if(q == 1){
      if(sub(/"$/,"",$n))   
        q = 0
      $c = $c FS $n
      continue
    }
    if(sub(/^"/,"",$n)){
      q = 1
      $(++c) = $n
      if(sub(/"$/,"",$n))
        q = 0;
      continue
    }
    $(++c) = $n
  }
  NF = c
}
{
  get_csv();
print $1,$3,$5
}

论坛徽章:
0
发表于 2017-05-22 16:31 |显示全部楼层
回复 5# 本友会机友会摄友会

linux 下咋用的?

论坛徽章:
0
发表于 2017-05-22 16:33 |显示全部楼层
回复 3# Shell_HAT

谢谢版主,可惜不是4版本

论坛徽章:
0
发表于 2017-05-22 16:34 |显示全部楼层
回复 4# vagrant_1220

恩,用match最简洁,谢谢啦

论坛徽章:
0
发表于 2017-05-22 16:35 |显示全部楼层
回复 6# jason680

貌似2楼的用match更简洁些,谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP