免费注册 查看新帖 |

Chinaunix

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

[文本处理] 提取含有关键字的多行文本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-11 11:53 |只看该作者 |倒序浏览
有一个仿真lis文件,里面有警告,警告格式一般是这样的:
**warning** dfja;fjasfj;
                   ajfklja;fjwoqj;

**warning** dfja;fjasfj;wqjfoqifmii2fdpfmkl

**warning** dfja;fjasfj;
                   ajfklja;fjwoqj;
                    dasdfawefqw

每一条警告行数不定,但是每一条警告之间有一行空行作为区分,现在想把这部分警告提取出来,用grep只能提取一行或者上下几行的,但是对于这种行数不定的来说没有通用性,请教各位大神有什么好方法,能把含有warning的信息的几行提取出来,万分感激!

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2014-08-11 12:03 |只看该作者
try
  1. awk '/^\*\*warning\*\*/,/^$/'
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-08-11 13:38 |只看该作者
回复 2# yestreenstars


    刚试了一下,不能抓出所有的warning,我仔细看了一下warning格式有的warning的**前面有两个空格,有的只有一个,能不能项grep一样把含有warning的行截出来一直截到空行为止?

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
4 [报告]
发表于 2014-08-11 13:41 |只看该作者
回复 3# luobingyin


    这个只需要将 星辰的代码当中的第一个"^"去掉就可以了

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
5 [报告]
发表于 2014-08-11 13:42 |只看该作者
回复 3# luobingyin

如楼上所言
   

论坛徽章:
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
6 [报告]
发表于 2014-08-11 13:52 |只看该作者
回复 3# luobingyin

$ awk  '/^ *\*\*warning\*\*/,/^$/' FILE
**warning** dfja;fjasfj;
                   ajfklja;fjwoqj;

  **warning** dfja;fjasfj;wqjfoqifmii2fdpfmkl

**warning** dfja;fjasfj;
                   ajfklja;fjwoqj;
                    dasdfawefqw


   

论坛徽章:
0
7 [报告]
发表于 2014-08-11 14:07 |只看该作者
回复 5# yestreenstars


    感谢~可以使用了,非常给力~
还有点小问题呀,这个lis文件中空行有的是用空格来弄得,如果用这个命令用空格作为空行的就筛不掉,能不能再帮想想办法呢 呵呵
再加条命令把多个空格删除,然后再运行一遍awk?

论坛徽章:
0
8 [报告]
发表于 2014-08-11 14:52 |只看该作者
回复 6# jason680


    已经可以使用了,但是还有个小问题,有个行是空格组成的,这个时候awk就会认错,我现在想把全是空格的行替换成空行,该怎么弄啊,网上查了好几个命令都不太对呀:

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
9 [报告]
发表于 2014-08-11 14:55 |只看该作者
本帖最后由 yestreenstars 于 2014-08-11 14:55 编辑
  1. awk '/\*\*warning\*\*/,/^[[:space:]]*$/'
复制代码
回复 7# luobingyin


   

论坛徽章:
0
10 [报告]
发表于 2014-08-11 15:17 |只看该作者
回复 9# yestreenstars


    完美!非常感谢耐心的解答~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP