忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: bikkuri

文本处理-从长文本中获取comment信息 [复制链接]

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2018-04-02 12:20 |显示全部楼层
回复 10# dahe_1984

谢谢您的帮助。可是这并不是我想要得到的结果呀?

论坛徽章:
0
发表于 2018-04-02 15:27 |显示全部楼层
回复 11# bikkuri

你想要什么结果,我没怎么看明白

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2018-04-03 09:02 |显示全部楼层
回复 12# dahe_1984

我希望的是从那一大段文本中提取出需要的(标记了颜色的)内容,最后得到"Yuanqing XU added a comment - 19/Mar/18 4:34 PM -> Hi Junho, This could be an indication that we didn't receive a response from TACACS+ server in a.."。
我可以用perl从文件中读出该段文本,并找到“added a comment”所在的位置,但是后面不知道怎么处理了。
while ( <FH> ) {
if (/added a comment/) {

...

}
close FH;

论坛徽章:
130
技术图书徽章
日期: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
发表于 2018-04-03 10:44 |显示全部楼层
回复 5# bikkuri

perl -pe 's/\\u([0-9a-f]{1,4})/chr(hex($1))/ge;s/\\"/"/g;s/\\\\/\\/g;s/\\\x27/\x27/g;s|\\/|/|g;s/\\n/\n/g;s/\\"/"/g' file

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2018-04-03 13:59 |显示全部楼层
回复 14# jason680

谢谢您的帮助。但是您的命令并不能得到希望的结果"Yuanqing XU added a comment - 19/Mar/18 4:34 PM -> Hi Junho, This could be an indication that we didn't receive a response from TACACS+ server in a.."啊?


论坛徽章:
130
技术图书徽章
日期: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
发表于 2018-04-03 14:02 |显示全部楼层
回复 15# bikkuri

What You Think Is What You Code

file -> html -> ?

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2018-04-04 03:47 |显示全部楼层
本帖最后由 bikkuri 于 2018-04-04 04:56 编辑

回复 16# jason680

不需要转换成html呀,直接从原始数据中搜索所需要的数据就可以了。

假如用shell写的话,用以下命令可以得到希望的结果。
  1. filter="added a comment"
  2. cuser="$(cat file |sed 's/\\\\n/\n/g'|grep -A2 -B1 "$filter"|tail -n 4|grep -oP "(?<=span\\\u003e ).*(?=\\\u003c)")"
  3. ctime="$(cat file |sed 's/\\\\n/\n/g'|grep -A2 -B1 "$filter"|tail -n 4|grep -oP "(?<=title=\\\\').*?(?=\\\\'\\\u003e)"|sed 's/\\\\//g')"
  4. comment="$(cat file |sed 's/\\\\n/\n/g'|grep -A7 "$filter"|tail -n 8|tr -d '\n'|grep -oP "(?<=u003e                    ).*")"
  5. update="$(echo "$cuser $filter - $ctime -> $comment")"
  6. if [ ${#update} -gt 150 ];then update="${update:0:148}.."; fi
复制代码


执行结果如下:
  1. [root@hp8:/tmp]# filter="added a comment"; cuser="$(cat file |sed 's/\\\\n/\n/g'|grep -A2 -B1 "$filter"|tail -n 4|grep -oP "(?<=span\\\u003e ).*(?=\\\u003c)")"; ctime="$(cat file |sed 's/\\\\n/\n/g'|grep -A2 -B1 "$filter"|tail -n 4|grep -oP "(?<=title=\\\\').*?(?=\\\\'\\\u003e)"|sed 's/\\\\//g')"; comment="$(cat file |sed 's/\\\\n/\n/g'|grep -A7 "$filter"|tail -n 8|tr -d '\n'|grep -oP "(?<=u003e                    ).*")"; update="$(echo "$cuser $filter - $ctime -> $comment")"; if [ ${#update} -gt 150 ];then update="${update:0:148}.."; fi; echo $update
  2. Yuanqing XU added a comment - 19/Mar/18 4:34 PM -> Hi Junho, This could be an indication that we didn\'t receive a response from TACACS+ server in ..
  3. [root@hp8:/tmp]#
复制代码



但是用perl应该怎么写呢?

论坛徽章:
0
发表于 2018-04-08 09:15 |显示全部楼层
#!perl

$a = '...nContainer\\\"\u003e\\n        \u003cdiv class=\\\"action-head\\\"\u003e\\n            \u003ca href=\\\"#\\\" title=\\\"Expand comment\\\" class=\\\"twixi\\\"\u003e\u003cspan class=\\\"icon-default aui-icon aui-icon-small aui-iconfont-collapsed\\\"\u003e\u003cspan\u003eShow\u003c\\/span\u003e\u003c\\/span\u003e\u003c\\/a\u003e\\n            \u003cdiv class=\\\"action-details flooded\\\"\u003e\\n                        \\n    \\n    \\n    \\n                \\n\\n    \u003ca class=\\\"user-hover user-avatar\\\" rel=\\\"FMS003720\\\" id=\\\"commentauthor_2008726_concise\\\" href=\\\"\\/secure\\/ViewProfile.jspa?name=FMS003720\\\"\u003e\u003cspan class=\\\"aui-avatar aui-avatar-xsmall\\\"\u003e\u003cspan class=\\\"aui-avatar-inner\\\"\u003e\u003cimg src=\\\"https:\\/\\/greenhopper.app.alcatel-lucent.com\\/secure\\/useravatar?size=xsmall&avatarId=10312\\\" alt=\\\"FMS003720\\\" \\/\u003e\u003c\\/span\u003e\u003c\\/span\u003e CARES\u003c\\/a\u003e\\n added a comment  - \u003cspan class=\'commentdate_2008726_concise subText\'\u003e\u003cspan class=\'date user-tz\' title=\'19\\/Mar\\/18 6:54 AM\'\u003e\u003ctime class=\'livestamp\' datetime=\'2018-03-19T06:54:20+0100\'\u003e19\\/Mar\\/18 6:54 AM\u003c\\/time\u003e\u003c\\/span\u003e\u003c\\/span\u003e                    Note Content: 03\\/19\\/18 00:53:56 julee \\nText Type: Customer modification\\/inquiry \\nHi Craig, \\n\\n Do you know what is the meaning of below logs? \\nIt seems there is some issue for authorization.  \\n\\n MINOR: CLI Command not allowed for this user.  \\n\\n Regards, \\nJunho              \u003c\\/div\u003e\\n        \u003c\\/div\u003e\\n    \u003c\\/div\u003e\\n\u003c\\/div\u003e\\n                             \\n\\n\\n\u003cdiv id=\\\"comment-2010460\\\" class=\\\"issue-data-block activity-comment twixi-block  expanded\\\"\u003e\\n    \u003cdiv class=\\\"twixi-wrap verbose actionContainer\\\"\u003e\\n        \u003cdiv class=\\\"action-head\\\"\u003e\\n            \u003ca href=\\\"#\\\" title=\\\"Collapse comment\\\" class=\\\"twixi\\\"\u003e\u003cspan class=\\\"icon-default aui-icon aui-icon-small aui-iconfont-expanded\\\"\u003e\u003cspan\u003eHide\u003c\\/span\u003e\u003c\\/span\u003e\u003c\\/a\u003e\\n            \u003cdiv class=\\\"action-links\\\"\u003e\\n                \u003ca href=\\\"\\/browse\\/XRS-2497?focusedCommentId=2010460&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-2010460\\\"\\n                   title=\\\"Right click and copy link for a permanent link to this comment.\\\" class=\\\"activitymodule-link issue-comment-action\\\"\u003e\\n                    \u003cspan class=\\\"icon-default aui-icon aui-icon-small aui-iconfont-link\\\"\u003ePermalink\u003c\\/span\u003e\u003c\\/a\u003e\\n                                            \u003c\\/div\u003e\\n            \u003cdiv class=\\\"action-details\\\"\u003e        \\n    \\n    \\n    \\n                \\n\\n    \u003ca class=\\\"user-hover user-avatar\\\" rel=\\\"yuanqinx\\\" id=\\\"commentauthor_2010460_verbose\\\" href=\\\"\\/secure\\/ViewProfile.jspa?name=yuanqinx\\\"\u003e\u003cspan class=\\\"aui-avatar aui-avatar-xsmall\\\"\u003e\u003cspan class=\\\"aui-avatar-inner\\\"\u003e\u003cimg src=\\\"https:\\/\\/greenhopper.app.alcatel-lucent.com\\/secure\\/useravatar?size=xsmall&avatarId=10312\\\" alt=\\\"yuanqinx\\\" \\/\u003e\u003c\\/span\u003e\u003c\\/span\u003e Yuanqing XU\u003c\\/a\u003e\\n added a comment  - \u003cspan class=\'commentdate_2010460_verbose subText\'\u003e\u003cspan class=\'date user-tz\' title=\'19\\/Mar\\/18 4:34 PM\'\u003e\u003ctime class=\'livestamp\' datetime=\'2018-03-19T16:34:48+0100\'\u003e19\\/Mar\\/18 4:34 PM\u003c\\/time\u003e\u003c\\/span\u003e\u003c\\/span\u003e  \u003c\\/div\u003e\\n        \u003c\\/div\u003e\\n        \u003cdiv class=\\\"action-body flooded\\\"\u003e\u003cp\u003eHi Junho,\u003c\\/p\u003e\\n\\n\u003cp\u003eThis could be an indication that we didn\'t receive a response from TACACS+ server in a timely manner, or we received a reject from TACACS+ server. A PCAP may help us understand what happened.\u003c\\/p\u003e\\n\\n\u003cp\u003eBest regards,\u003cbr\\/\u003e\\nDavid Xu\u003c\\/p\u003e \u003c\\/div\u003e\\n    \u003c\\/div\u003e\\n    \u003cdiv class=\\\"twixi-wrap concise actionContainer\\\"\u003e\\n        \u003cdiv class=\\\"action-head\\\"\u003e\\n            \u003ca href=\\\"#\\\" title=\\\"Expand comment\\\" class=\\\"twixi\\\"\u003e\u003cspan class=\\\"icon-default aui-icon aui-icon-small aui-iconfont-collapsed\\\"\u003e\u003cspan\u003eShow\u003c\\/span\u003e\u003c\\/span\u003e\u003c\\/a\u003e\\n            \u003cdiv class=\\\"action-details flooded\\\"\u003e\\n                        \\n    \\n    \\n    \\n                \\n\\n    \u003ca class=\\\"user-hover user-avatar\\\" rel=\\\"yuanqinx\\\" id=\\\"commentauthor_2010460_concise\\\" href=\\\"\\/secure\\/ViewProfile.jspa?name=yuanqinx\\\"\u003e\u003cspan class=\\\"aui-avatar aui-avatar-xsmall\\\"\u003e\u003cspan class=\\\"aui-avatar-inner\\\"\u003e\u003cimg src=\\\"https:\\/\\/greenhopper.app.alcatel-lucent.com\\/secure\\/useravatar?size=xsmall&avatarId=10312\\\" alt=\\\"yuanqinx\\\" \\/\u003e\u003c\\/span\u003e\u003c\\/span\u003e Yuanqing XU\u003c\\/a\u003e\\n added a comment  - \u003cspan class=\'commentdate_2010460_concise subText\'\u003e\u003cspan class=\'date user-tz\' title=\'19\\/Mar\\/18 4:34 PM\'\u003e\u003ctime class=\'livestamp\' datetime=\'2018-03-19T16:34:48+0100\'\u003e19\\/Mar\\/18 4:34 PM\u003c\\/time\u003e\u003c\\/span\u003e\u003c\\/span\u003e                    Hi Junho, \\n\\n This could be an indication that we didn\'t receive a response from TACACS+ server in a timely manner, or we received a reject from TACACS+ server. A PCAP may help us understand what happened. \\n\\n Best regards, \\nDavid Xu              \u003c\\/div\u003e\\n        \u003c\\/div\u003e\\n    \u003c\\/div\u003e\\n\u003c\\/div\u003e\\n                             \u003c\\/div\u003e\\n    \u003c\\/div\u003e\\n\"";';



$a =~ s/\\u([0-9a-f]{1,4})/chr(hex($1))/ge;s/\\"/"/g;s/\\\\/\\/g;s/\\\x27/\x27/g;s|\\/|/|g;s/\\n/\n/g;s/\\"/"/g;
$a =~ s/<.*?>//g;
$a =~ s/&lt;.*?&gt;//g;
print($a);

print "\n\n\n";
# print "\n\n\n";
$a =~ s/\\n+/ /g;
$a =~ s/\s+/ /g;
print($a);

@array = split/added a comment/, $a;

print "\n\n\n";
print $array[-1];
print "\n\n\n";
print $array[-2];
print "\n\n\n";
@name = split/[\s]+/, $array[-2];
print($name[-1], " ",$name[-2], " ");

$array[-1] =~ s/\\//g;
print (substr($array[-1], 0, (150 - length($name[-1]) - length($name[-2]))));

论坛徽章:
0
发表于 2018-04-08 09:16 |显示全部楼层
XU Yuanqing  - 19/Mar/18 4:34 PM Hi Junho, This could be an indication that we didn't receive a response from TACACS+ se
rver in a timely manner, or we r

论坛徽章:
0
发表于 2018-04-08 09:17 |显示全部楼层
主要是里面的标签对太多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP