免费注册 查看新帖 |

Chinaunix

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

[文本处理] 文本求助 - 格式转换 [复制链接]

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-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:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-03-18 22:54 |只看该作者 |倒序浏览
本帖最后由 bikkuri 于 2019-03-18 22:57 编辑

大家好!
我有一个问题向大家请教。
有这样一个文本,我希望从中截取以下有用的信息,并按照格式输入得到的纪录。
1、查找以"^[A-Z]{2,6}-[0-9]{1,6}"开头的行,去掉后面<http的部分,作为一条纪录的第一项;
2、往下第5行(包括三个空行)的内容作为纪录的第二项;
3、再往下第6行(包括三个空行)的内容作为纪录的第三项;
4、再往下第2行(包括一个空行)去掉后面<http的部分的内容作为纪录的第四项;
5、再往下第2行(包括一个空行)去掉后面<http的部分的内容作为纪录的第五项;
------------------------------------------------------------------------------
Issue Subscription


Filter:

abrown9 opening tickets<http://ticket.ca.alworld.com:8082/issues/?filter=31736> (148 issues)

Subscriber:

abrown9


Key

Summary

Status

Created

AR Number

Resolution

Assignee

Reporter

NSPD-233474<http://ticket.ca.alworld.com:8082/browse/NSPD-233474>


CMM PM stats update stops and delays on NFM-P 17.12<http://ticket.ca.alworld.com:8082/browse/NSPD-233474>

Not-Escalated

12/Mar/19

1-7477530

Unresolved

Anshu Saraiya<http://ticket.ca.alworld.com:808 ... a?name=asaraiya>

Alice Brown<http://ticket.ca.alworld.com:808 ... pa?name=abrown9>

NSPD-233282<http://ticket.ca.alworld.com:8082/browse/NSPD-233282>


A service endpoint on 7210 SAS-Mxp cannot be selected as traffic test destination for Y.1564 Throughput test in NFM-P<http://ticket.ca.alworld.com:8082/browse/NSPD-233282>

Not-Escalated

07/Mar/19

1-7481507

Unresolved

Christian James<http://ticket.ca.alworld.com:808 ... a?name=jchristi>

Alice Brown<http://ticket.ca.alworld.com:808 ... pa?name=abrown9>

...
NSPD-232788<http://ticket.ca.alworld.com:8082/browse/NSPD-232788>


A service endpoint on 7250 IXR-R6/7210 SAS-Mxp cannot be selected as traffic test destination for Y.1564 Throughput test in NFM-P 18.12<http://ticket.ca.alworld.com:8082/browse/NSPD-232788>

Not-Escalated

27/Feb/19

1-7467533

Resolved

Christian James<http://ticket.ca.alworld.com:808 ... a?name=jchristi>

Alice Brown<http://ticket.ca.alworld.com:808 ... pa?name=abrown9>


You may edit this subscription here<http://ticket.ca.alworld.com:808 ... filterId=31736>.





This message was sent by Atlassian (v7.1.2#71006-sha1:8e7e309)

[Atlassian logo]

------------------------------------------------------------------------------
以下是按照规则希望得到的输出结果:

NSPD-233474|Not-Escalated|Unresolved|Anshu Saraiya|Alice Brown
NSPD-233282|Not-Escalated|Unresolved|Christian James|Alice Brown
...
NSPD-232788|Not-Escalated|Resolved|Christian James|Alice Brown

谢谢大家的帮助!

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
2 [报告]
发表于 2019-03-19 10:00 |只看该作者
test.awk
  1. function readNextN(N,i,a) {
  2.     for(i=1;i<=N;i++)
  3.         getline a
  4.     return a
  5. }
  6. function getItem(S,t) {
  7.     split(S,t,"<")
  8.     return t[1]
  9. }

  10. /^[A-Z]{2,6}-[0-9]{1,6}/{
  11.     print getItem($0) "|" readNextN(5) "|" readNextN(6) "|" getItem(readNextN(2)) "|" getItem(readNextN(2))
  12. }
复制代码

  1. awk -f test.awk file.txt
复制代码

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
3 [报告]
发表于 2019-03-19 17:16 |只看该作者
本帖最后由 1cpuer 于 2019-03-19 22:42 编辑

# awk -f t1.awk file1
跑不出来咋的?
#.: cat t1.awk
function readNextN(N,i,a) {
    for(i=1;i<=N;i++)
        getline a
    return a
}
function getItem(S,t) {
    split(S,t,"<")
    return t[1]
}
/^[A-Z]{2,6}-[0-9]{1,6}/{
    print getItem($0) "|" readNextN(5) "|" readNextN(6) "|" getItem(readNextN(2)) "|" getItem(readNextN(2))
}


#.: awk --version
GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.0)
Copyright (C) 1989, 1991-2016 Free Software Foundation.

#.: awk -F'<' '/NSPD/,/Alice Brown/{if($0!~/1-7*|[0-9][0-9]\/[A-Z]|CMM|test destination/)print $1}' file1


论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-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:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
4 [报告]
发表于 2019-03-20 01:19 |只看该作者
回复 2# cfwyy

非常感谢您的帮助。好像您的代码在awk4.0.2上可以得到正确结果但是在awk3.1.7上没有任何输出。




有什么办法可以在awk3.1.7上也能得到正确结果吗?
谢谢!

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-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:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
5 [报告]
发表于 2019-03-20 01:28 |只看该作者
找到了,在awk3.1.7下用--posix参数就可以得到正确输出了。非常感谢!


论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
6 [报告]
发表于 2019-03-20 09:04 |只看该作者
回复 5# bikkuri

哦哦,我这里awk版本是4.1.4,默认就正常的。老的版本像3.1.7我也没怎么用过。
我也大概了解了一下应该是不同版本 对posix的正则标准是不是默认启用造成的。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP