免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5709 | 回复: 12

[文本处理] 如何删除匹配后的部分内容? [复制链接]

论坛徽章:
0
发表于 2013-10-02 19:45 |显示全部楼层
本帖最后由 lwgboy 于 2013-10-02 20:21 编辑

文本内容:
01 a1234b
02 a3456b
03 a2222b
04 a2222b
05 a2222b

06 a3333b
07 a2222b
08 a2222b

09 a4444b
10 a5555b
11 a2222b
12 a7890b
13 a2222b
14 a2345b
15 a2345b

想把其中含 a2222b 行全部提取出来后(/a2222b/),删除其中的第2到第4行,该怎么写脚本?(/a2222b/d 会全部删掉的)

希望的结果是:
01 a1234b
02 a3456b
03 a2222b
06 a3333b
08 a2222b
09 a4444b
10 a5555b
11 a2222b
12 a7890b
13 a2222b
14 a2345b
15 a2345b

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2013-10-02 20:11 |显示全部楼层
回复 1# lwgboy

没看懂,你这个结果是怎么来的?
   

论坛徽章:
0
发表于 2013-10-02 20:17 |显示全部楼层
回复 2# 关阴月飞

我又把每行前面加上了序号便于理解,你再帮看下,谢谢!

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2013-10-02 20:23 |显示全部楼层
本帖最后由 关阴月飞 于 2013-10-02 20:26 编辑

回复 3# lwgboy
  1. awk '/a2222b/{n++}!(n>1&&n<5)' urfile
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2013-10-02 20:34 |显示全部楼层
01 a1234b
02 a3456b
03 a2222b
04 a2222b
05 a2222b
06 a3333b #也会不显示
07 a2222b
08 a2222b
09 a4444b
10 a5555b
11 a2222b
12 a7890b
13 a2222b
14 a2345b
15 a2345b
@关阴月飞

论坛徽章:
0
发表于 2013-10-02 20:38 |显示全部楼层
关阴月飞 发表于 2013-10-02 20:23
回复 3# lwgboy


谢谢!
好像会把中间的一些非匹配行数给过滤掉,如:

1
2
3
4
5
5
5
100
5
5
200
5
5
6
7
8
9
执行  awk '/5/{n++}!(n>1&&n<5)'   t.txt 后的结果是:
1
2
3
4
5
5
200
5
5
6
7
8
9
10

把100给过滤掉了。

另外请教下,用sed的话该怎么写好?谢谢!

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2013-10-02 21:22 |显示全部楼层
本帖最后由 关阴月飞 于 2013-10-02 21:26 编辑

回复 6# lwgboy
@cao627 多谢提醒

    疏忽了:
  1. awk '/a2222b/{if(++n>1&&n<5)next}1'  urfile
复制代码

  1. [root@master awktest]# cat file
  2. 01 a1234b
  3. 02 a3456b
  4. 03 a2222b
  5. 04 a2222b
  6. 05 a2222b
  7. 06 a3333b
  8. 07 a2222b
  9. 08 a2222b
  10. 09 a4444b
  11. 10 a5555b
  12. 11 a2222b
  13. 12 a7890b
  14. 13 a2222b
  15. 14 a2345b
  16. 15 a2345b
  17. [root@master awktest]# awk '/a2222b/{if(++n>1&&n<5)next}1' file
  18. 01 a1234b
  19. 02 a3456b
  20. 03 a2222b
  21. 06 a3333b
  22. 08 a2222b
  23. 09 a4444b
  24. 10 a5555b
  25. 11 a2222b
  26. 12 a7890b
  27. 13 a2222b
  28. 14 a2345b
  29. 15 a2345b
复制代码

论坛徽章:
0
发表于 2013-10-02 22:14 |显示全部楼层
本帖最后由 lwgboy 于 2013-10-02 22:15 编辑

回复 7# 关阴月飞

可以了,谢谢 关阴月飞大侠 和 cao627 。
   

论坛徽章:
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
发表于 2013-10-03 10:16 |显示全部楼层
回复 8# lwgboy

how about this way that easy to know skip 2nd to 4th when appear a2222b

awk '/a2222b/{n++;if(2<=n&&n<=4)next}1' FILE
   

论坛徽章:
1
摩羯座
日期:2014-11-14 16:48:17
发表于 2013-12-01 16:31 |显示全部楼层
回复 7# 关阴月飞
lz,,n在这里是累计的作用,当大于1同时小于5,执行next,但在这么并没有删除,这里不是很明白,还请lz细说。


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP