免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 120215
打印 上一主题 下一主题

[文本处理] 同时匹配上下两行 [复制链接]

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
11 [报告]
发表于 2014-11-28 22:50 |只看该作者
awk '{if($2!=99)next;getline var;
> if(index(var,$1))print $1}' 111
chr1_217
chr1_5663
chr1_383
chr1_6535

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
12 [报告]
发表于 2014-11-28 22:53 |只看该作者
回复 1# 120215
11l楼的有错误,试试这个
awk '{if($2!=99)next;getline var;
if(index(var,$1)&&index(var,"147"))print $1}' 111
chr1_217
chr1_5663
chr1_383



   

论坛徽章:
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
13 [报告]
发表于 2014-11-28 23:25 |只看该作者
回复 1# 120215

easy and simple way

$ awk '$1==s1&&s2==99&&$2==147{print $1}{s1=$1;s2=$2}' FILE
chr1_217
chr1_5663
chr1_383

论坛徽章:
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
14 [报告]
发表于 2014-11-28 23:38 |只看该作者
回复 12# super皮波

your code got the some bug
# it is not a good idea to use getline and index function for this case

$ cat FILE
chr1_217 99
chr1_217 99
chr1_217 147

chr1_217 99
chr1_5663 99
chr1_5663 147

chr1_15663 99
chr1_156633 1477

$ awk '$1==s1&&s2==99&&$2==147{print $1}{s1=$1;s2=$2}' FILE
chr1_217
chr1_5663

$ awk '{if($2!=99)next;getline var;
if(index(var,$1)&&index(var,"147"))print $1}' FILE
chr1_15663

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
15 [报告]
发表于 2014-11-28 23:58 |只看该作者
回复 14# jason680
是的,考虑的还是不周全,谢谢指点!!


   

论坛徽章:
0
16 [报告]
发表于 2014-12-01 12:07 |只看该作者
awk '$2==147&&$1==a&&b==99{print a,b;print $0;a="";b="";}{a=$1;b=$2;}'

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
17 [报告]
发表于 2014-12-01 13:33 |只看该作者
  1. awk 'a[$1]!=""&&$2==147{print $1;next} $2==99{a[$1]++}' o
复制代码

论坛徽章:
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
18 [报告]
发表于 2014-12-01 14:12 |只看该作者
回复 10# 120215


a[$1]=a[$1]?a[$1]$22
先判断a[$1]是否为真
如果为真,就是相当于执行 a[$1]=a[$1]?a[$1]$2
如果为假,就是相当于执行 a[$1]=$2

论坛徽章:
0
19 [报告]
发表于 2014-12-01 15:25 |只看该作者
  1. a[$1]=a[$1]?a[$1]$2:$2
复制代码
if a[$1] != null
then a[$1] = a[$1]$2
else a[$1] = $2
  

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
20 [报告]
发表于 2014-12-01 18:42 |只看该作者
  1. #!/usr/bin/env  python

  2. dict = {}
  3. for line in open("1.txt"):
  4.                 l = line.split()
  5.                 dict.setdefault(l[0], []).append(l[1])

  6. for key in dict:
  7.         if dict[key][0] == '99' and dict[key][1] == '147':
  8.                 print key
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP