免费注册 查看新帖 |

Chinaunix

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

如果用grep匹配了某一行,能否一起显示下面接连的几行? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-19 22:57 |只看该作者 |倒序浏览
如果用grep匹配了某一行,能否一起显示下面接连的几行?(或有没其它方法可以实现?)
这个功能常常需要到
谢谢啦!

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
2 [报告]
发表于 2005-04-19 23:01 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

  1. r2007@www r2007 $ man grep|grep -A4 -- "-A"                                    
  2.        -A NUM, --after-context=NUM
  3.               Print NUM  lines  of  trailing  context  after  matching  lines.
  4.               Places  a  line  containing  --  between  contiguous  groups  of
  5.               matches.
  6. r2007@www r2007 $ grep --version
  7. grep (GNU grep) 2.5.1

  8. Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
  9. This is free software; see the source for copying conditions. There is NO
  10. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-04-19 23:15 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

问个相关的:
匹配了某一行,同时想向上和向下显示若干行呢?

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
4 [报告]
发表于 2005-04-19 23:17 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

  1. r2007@www r2007 $ man grep|grep -A4 -B10 -- "-B"                                
  2. OPTIONS
  3.        -A NUM, --after-context=NUM
  4.               Print NUM  lines  of  trailing  context  after  matching  lines.
  5.               Places  a  line  containing  --  between  contiguous  groups  of
  6.               matches.

  7.        -a, --text
  8.               Process a binary file as if it were text; this is equivalent  to
  9.               the --binary-files=text option.

  10.        -B NUM, --before-context=NUM
  11.               Print  NUM  lines  of  leading  context  before  matching lines.
  12.               Places  a  line  containing  --  between  contiguous  groups  of
  13.               matches.
复制代码

论坛徽章:
0
5 [报告]
发表于 2005-04-19 23:24 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

非常感谢!
我正为一个实现类似功能的脚本在学习shell呢!
如有问题,再次请教斑竹:)

论坛徽章:
0
6 [报告]
发表于 2005-04-19 23:32 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?


  1. ……

  2. <VirtualHost 210.51.*.*>
  3. ServerAdmin ddd@163.com
  4. DocumentRoot /web/aaaa.com/web
  5. ServerName www.aaaa.com
  6. ServerAlias aaaa.com cccc.cn  
  7. DirectoryIndex index.html index.htm default.html default.htm index.shtml index.php index.php3 default.php
  8. <Directory /web/aaaa.com/web/cgi-bin/>
  9.        AllowOverride None
  10.        Options ExecCGI
  11.        Order allow,deny
  12.        Allow from all
  13. </Directory>
  14. </VirtualHost>

  15. <VirtualHost 210.51.*.*>
  16. ServerAdmin dddd@163.com
  17. DocumentRoot /web/bbbb.cn/web
  18. ServerName www.bbbb.cn
  19. ServerAlias bbbb.cn
  20. #TransferLog /var/log/httpd/bbbb.cn-access_log
  21. #CustomLog /var/log/httpd/bbbb.cn-referer_log "%{referer}i ->%U"
  22. Alias /cgi-bin/ /web/bbbb.cn/web/cgi-bin/
  23. ScriptAlias /cgi-bin/ /web/bbbb.cn/web/cgi-bin/
  24. DirectoryIndex index.html index.htm default.html default.htm index.shtml index.php index.php3 default.php
  25. <Directory /web/bbbb.cn/web/cgi-bin/>
  26.        AllowOverride None
  27.        Options ExecCGI
  28.        Order allow,deny
  29.        Allow from all
  30. </Directory>
  31. </VirtualHost>

  32. ……
复制代码

如果我想实现删除bbbb.cn所有相关的VirtualHost描述,怎么办?

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
7 [报告]
发表于 2005-04-19 23:39 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

    
不太好办^_^
用awk可以完成。

论坛徽章:
0
8 [报告]
发表于 2005-04-19 23:47 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

原帖由 "r2007" 发表:
    
不太好办^_^
用awk可以完成。

我试着用awk了
可没搞出来啊

  1. awk -vflag=0 '{if(flag==1)print}/VirtualHost/{flag=1;print};/\、VirtualHost/{exit}' tmp.txt
复制代码

通过这个我倒可以匹配到两VirtualHost之间的东西
但如果tmp.txt文件中有多个VirtualHost描述——譬如上面的语句。就出问题了

论坛徽章:
0
9 [报告]
发表于 2005-04-19 23:55 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

因为我有可能实现删除aaaa.com之后再删除bbbb.cn,依次类推,就是说删除多个相匹配的描述
那么就要用到变量和循环,刚才我看的了在awk中如何用变量:
  1. awk中不能如此使用变量,可改成以下形式,便可以了。
  2. echo "enter:"
  3. read key
  4. export key
  5. cat filename|awk '{if(prev==ENVIRON["key"])print;prev=$1}'
  6. 这样也可以:
  7. echo "enter:"
  8. read key
  9. cat filename|awk '{if(prev=="'$key'"print;prev=$1}'
复制代码

假设通过这一步可以匹配到要删除的bbbb.cn了,那么如何获得与他上下最近的VirtualHost描述的开始和结束的行呢?
谢谢!

论坛徽章:
0
10 [报告]
发表于 2005-04-20 00:01 |只看该作者

如果用grep匹配了某一行,能否一起显示下面接连的几行?

您的grep有-p参数么,有的话可以
  1. grep -v -p "bbbb.cn" tmp.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP