免费注册 查看新帖 |

Chinaunix

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

请问如何段内匹配并输出结果,谢谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-28 15:36 |只看该作者 |倒序浏览
文本内容如下,现在想获取begin和end之间同时含有BBCC、EEFF两个字符串的段,并打印出来。
begin
AABB
AACC
end
begin
BBCC
EEFF
end
begin
ABCD
HIGJ
end
begin
ABCD
ABEF
end

打印结果应为:
begin
BBCC
EEFF
end

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2011-05-28 15:44 |只看该作者
回复 1# huatuo20002008
  1. sed -n '/begin/,/end/{/begin/h;/begin/! H;/end/{x;/BBCC.*EEFF/p}}'
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-05-28 17:23 |只看该作者
谢谢大侠,再请教下:如果用AWK的话,需如何实现?

论坛徽章:
0
4 [报告]
发表于 2011-05-28 20:33 |只看该作者
#!/bin/bash
awk '
BEGIN{
FS="\n"
RS="end\n"
}

{
if($2=="BBCC" && $3=="EEFF") printf("%s\n%s\n%s\nend\n",$1,$2,$3)
}' $*

这是我写的 初学 可能写的不太好

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
5 [报告]
发表于 2011-05-28 21:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
双子座
日期:2013-10-17 00:46:45
6 [报告]
发表于 2011-05-29 00:26 |只看该作者
回复 3# huatuo20002008
  1. june@~ 00:22:34>
  2. awk '{if($0 ~/begin/)fa=1;if(fa==1)a[FNR]=$0;if($0 ~/BBCC/)fb=1;if($0 ~/end/ ){ if(fb==1){for(i in a){print i"---"a[i]};delete a; fa=fb=0;}else{delete a; fa=fb=0}}}' bb
  3. 5---begin
  4. 6---BBCC
  5. 7---EEFF
  6. 8---end
  7. 17---begin
  8. 18---BBCC
  9. 19---====
  10. 20---EEFF
  11. 21---end
  12. june@~ 00:22:40>
  13. cat -n bb
  14.      1  begin
  15.      2  AABB
  16.      3  AACC
  17.      4  end
  18.      5  begin
  19.      6  BBCC
  20.      7  EEFF
  21.      8  end
  22.      9  begin
  23.     10  ABCD
  24.     11  HIGJ
  25.     12  end
  26.     13  begin
  27.     14  ABCD
  28.     15  ABEF
  29.     16  end
  30.     17  begin
  31.     18  BBCC
  32.     19  ====
  33.     20  EEFF
  34.     21  end
  35. june@~ 00:22:58>

复制代码

论坛徽章:
0
7 [报告]
发表于 2011-05-29 01:04 |只看该作者

  1. awk '/begin/,/end/{str=!str?$0:str"\n"$0;if($0=="end"){if(str~/BBCC/&&str~/EEFF/)print str;str=""}}' file
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
8 [报告]
发表于 2011-05-29 02:46 |只看该作者
回复 1# huatuo20002008
  1. awk '/BBCC.*EEFF/{print "begin"$0RT}' RS="begin|end" file
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP