免费注册 查看新帖 |

Chinaunix

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

[文本处理] 在线求一处理文本SHELL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-25 19:06 |只看该作者 |倒序浏览
本帖最后由 softiger 于 2016-04-25 19:18 编辑

有文本内容如下:
43,#2603902,04/20/2016 19:19:47,04/20/2016 20:21:03,J2-P750-E8B-SN06FAC3P,"Error Log Analysis has detected multiple communication errors.  These errors can be caused by attached devices, a switch, a hub, or a SCSI-to-FC convertor.  If connected to a switch, refer to the Storage Area Network (SAN) problem determination procedures for additional problem resolution.  If not connected to a switch, run diagnostics on the attached devices.  If a hub or SCSI-to-FC convertor is attached, refer to the product documentation for problem resolution.",04/20/2016 19:19:47,04/20/2016 19:29:07
50,10001522,04/25/2016 15:43:27,04/25/2016 15:43:27,I2_Server-8233-E8B-SN06E4C5R,ACT04293I Power/Cooling subsystem & control (0x61) reported an error.,04/25/2016 15:43:27,04/25/2016 15:52:08

它的规律是
如果中间的一段用双引号""包含起来的内容,则引号内的内容包含有逗号,
如果中间的内容没用""包含起来,则他的那部分内容不包含有逗号。

导致无法直接用逗号来分割获取需要分割的内容,需求是希望切割的内容是

43,--$1
#2603902,---$2
04/20/2016 19:19:47,--$3
04/20/2016 20:21:03,--$4
J2-P750-E8B-SN06FAC3P,--$5
"Error Log Analysis has detected multiple communication errors.  These errors can be caused by attached devices, a switch, a hub, or a SCSI-to-FC convertor.  If connected to a switch, refer to the Storage Area Network (SAN) problem determination procedures for additional problem resolution.  If not connected to a switch, run diagnostics on the attached devices.  If a hub or SCSI-to-FC convertor is attached, refer to the product documentation for problem resolution.",--$6
04/20/2016 19:19:47,--$7
04/20/2016 19:29:07--$8

50,--$1
10001522,--$2
04/25/2016 15:43:27,--$3
04/25/2016 15:43:27,--$4
I2_Server-8233-E8B-SN06E4C5R,--$5
ACT04293I Power/Cooling subsystem & control (0x61) reported an error.,--$6
04/25/2016 15:43:27,--$7
04/25/2016 15:52:08--$8

使得可以用;分割$1;$2;$3;$4;$5;$6;$7;$8

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2016-04-25 19:58 |只看该作者
本帖最后由 sunzhiguolu 于 2016-04-25 20:01 编辑
  1. perl -nle '{if (s/("[^"]*"),//){$s5=$1;@a=split(/,/,$_);splice(@a,4,0,$s5)}else{@a=split(/,/,$_)}print join (";",@a)}' urfile
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
3 [报告]
发表于 2016-04-25 21:26 |只看该作者
本帖最后由 haooooaaa 于 2016-04-25 21:28 编辑
  1. awk -vFPAT='([^,]+)|("[^"]+")' '{for(i=1;i<=NF;i++)print $i}' file
复制代码
  1. awk -vRS='([^,]+)|("[^"]+")' '{print RT}' file
复制代码

论坛徽章:
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
4 [报告]
发表于 2016-04-25 21:43 |只看该作者
回复 1# softiger

How about this way with csv function...


$ awk -F, 'function csv(q,n,c){for(n=1;n<=NF;n++){if(!q)c++;$c=q?$c FS $n:$n;if($n~/^"/)q=1;if($n~/"$/){q=0;gsub(/"/,"",$c)}}NF=c}{csv();for(n=1;n<=NF;n++)print $n"--$"n}' file
43--$1
#2603902--$2
04/20/2016 19:19:47--$3
04/20/2016 20:21:03--$4
J2-P750-E8B-SN06FAC3P--$5
Error Log Analysis has detected multiple communication errors.  These errors can be caused by attached devices, a switch, a hub, or a SCSI-to-FC convertor.  If connected to a switch, refer to the Storage Area Network (SAN) problem determination procedures for additional problem resolution.  If not connected to a switch, run diagnostics on the attached devices.  If a hub or SCSI-to-FC convertor is attached, refer to the product documentation for problem resolution.--$6
04/20/2016 19:19:47--$7
04/20/2016 19:29:07--$8
50--$1
10001522--$2
04/25/2016 15:43:27--$3
04/25/2016 15:43:27--$4
I2_Server-8233-E8B-SN06E4C5R--$5
ACT04293I Power/Cooling subsystem & control (0x61) reported an error.--$6
04/25/2016 15:43:27--$7
04/25/2016 15:52:08--$8

   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
5 [报告]
发表于 2016-04-25 22:31 |只看该作者
  1. perl -ple '$_=join (";",/".*?"|[^,]+/g)'  file
复制代码

论坛徽章:
1
2015亚冠之萨济拖拉机
日期:2015-09-04 10:29:22
6 [报告]
发表于 2016-04-26 11:14 |只看该作者
cat tt3 | awk -F"\"" '{gsub(",","@@@",$2)}1' | awk -F"," '{gsub("@@@",",",$6);print $1,"\n",$2,"\n",$3,"\n",$4,"\n",$5,"\n",$6,"\n",$7,"\n",$8,"\n"}'
试试这个可行不.

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
7 [报告]
发表于 2016-04-26 13:57 |只看该作者
  1. sed -r -e{,,,,}'s/,/;/' -e{,}'s/(.*),/\1;/' file
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP