免费注册 查看新帖 |

Chinaunix

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

SHELL脚本抽取文件特定区域问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-14 22:14 |只看该作者 |倒序浏览
最近工作上碰到一个问题,不知道该怎么解决,特来问问大家!!

我需要从日志文件尾向上搜索两个特定关键字,然后将这两个关键字之间的所有行给抽取出来,这个如何实现呢?

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
2 [报告]
发表于 2011-08-14 22:32 |只看该作者
tac log|sed -n '/key1/,/key2/p'
# 不确定是否符合你的要求

论坛徽章:
0
3 [报告]
发表于 2011-08-14 22:47 |只看该作者
谢谢你  这样可以过滤出来,但是会把文件中所有这两个关键字之间的行都会过滤出来,我想从文件尾向上搜索执行第一次过滤后就让sed停止 ,不再继续向上搜索

论坛徽章:
1
双子座
日期:2013-10-17 00:46:45
4 [报告]
发表于 2011-08-15 00:27 |只看该作者
不简洁,期待高手
xrzs1986@ubuntu:~$ echo "2
3
4
5
4
6
5
8
9"|tac|sed -n '/5/,/4/p;/4/q'|tac
4
6
5
xrzs1986@ubuntu:~$

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
5 [报告]
发表于 2011-08-15 01:03 |只看该作者
本帖最后由 yinyuemi 于 2011-08-15 07:23 编辑

回复 3# lthk01


    Try:
  1. echo  't 1 s
  2. t a x
  3. t 1 s
  4. t 1 s
  5. t b y
  6. t 2 s
  7. t a x
  8. t 2 s
  9. t 2 s
  10. t b y
  11. t 3 s
  12. t 3 s
  13. t 3 s'|\
  14. awk -vRS="[^\n]*(a|b)[^\n]*\n" '{a=b;b=$0}END{print a}'  #a,b为关键词
  15. t 2 s
  16. t 2 s
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-08-15 12:21 |只看该作者
回复 3# lthk01


    sed, awk
最近工作上碰到一个问题,不知道该怎么解决,特来问问大家!!

我需要从日志文件尾向上搜索两个特定关键字,然后将这两个关键字之间的所有行给抽取出来,这个如何实现呢?


你的原话不就是要把之间的所有行抽出来么?

论坛徽章:
0
7 [报告]
发表于 2011-08-15 12:57 |只看该作者
谢谢大家    问题已经解决了,非常抱歉,先前问题没有描述清楚,因为是日志文件,会有大量重复信息,而我只需要提取从文件尾部的第一次过滤信息,所以我说从文件尾向上搜索,这样才可以把最后一次的内容给过滤出来。现在使用4楼提供的sed方法已经可以将需要的信息给提取出来了,至于awk也是可以实现的,不过方法太高级,我还没有掌握,非常惭愧。以后会加倍努力学习,再次感谢大家的帮助!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP