免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed如何删除匹配行以及上下文 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-23 10:58 |只看该作者 |倒序浏览
本帖最后由 oguy99 于 2013-08-23 11:01 编辑

rt, 文本中假如有 storage的行, 现在要删除包括匹配行以及它上面4行,下面2行,如何做?

论坛徽章:
1
天蝎座
日期:2013-08-22 15:14:44
2 [报告]
发表于 2013-08-23 11:08 |只看该作者
本帖最后由 guogang225 于 2013-08-23 11:25 编辑
  1. sed -nr ':a;N;$!ba;s/(.*\n).*\n.*\n.*\n.*\nstorage\n.*\n.*\n(.*)/\1\2/gp' urfile
复制代码
or
  1. sed -nr ':a;N;$!ba;s/(.*)([^\n]*\n){5}storage\n([^\n]*\n){2}(.*)/\1\n\4/gp' urfile
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2013-08-23 11:19 |只看该作者
回复 1# oguy99
  1. seq 10 |sed -rn '0,/5/{H;/5/{g;s/^\n(.*)\n(([^\n]+\n){3}[^\n]+)$/\1/p;N;N};d};p'
  2. 1
  3. 8
  4. 9
  5. 10
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
4 [报告]
发表于 2013-08-23 11:28 |只看该作者
  1. [WilliBhamlll@CC ~]$ cat file
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. storage
  10. 8
  11. 9
  12. 10
  13. 11
  14. [WilliBhamlll@CC ~]$ sed -nr '1h;1!H;$!b;x;s/(.*)([^\n]+\n){4}storage\n([^\n]+\n){2}/\1/p' file
  15. 1
  16. 2
  17. 3
  18. 10
  19. 11
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-08-23 11:53 |只看该作者
回复 4# WilliBhamlll


    怎么什么输出都没有??

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
6 [报告]
发表于 2013-08-23 12:03 |只看该作者
回复 5# oguy99


    可能你的文本跟我的测试文件不一样。能贴一下你的文件吗?

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
7 [报告]
发表于 2013-08-23 12:11 |只看该作者
本帖最后由 WilliBhamlll 于 2013-08-23 12:20 编辑

回复 5# oguy99


    改成这样再试试:
  1. sed -nr '1h;1!H;$!b;x;s/(.*)([^\n]+\n){4}.*storage[^\n]*\n([^\n]+\n){2}/\1/p' file
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP