Chinaunix

标题: 输出匹配行的前后几行 [打印本页]

作者: iamline    时间: 2013-08-06 10:50
标题: 输出匹配行的前后几行
  如何同时输出匹配行的前1行和后3行啊?我用awk只懂得输出匹配的后3行:

  more file | awk '{if($0 ~/^@HIT/){ getline; if(substr($0,1,3) ~/ABC/){print; getline;print; getline;print}}}'

  用grep的-A 和-B不能同时实现;

  各位大侠帮帮我吧!!

作者: ljwd1000    时间: 2013-08-06 10:55
本帖最后由 ljwd1000 于 2013-08-06 11:09 编辑
  1. seq 10 | awk '/3/{getline a;getline b;getline c;print d,a,b,c}{d=$0}'
  2. seq 10 | sed -n '/4/{x;N;N;N;p};h'
复制代码

作者: HH106    时间: 2013-08-06 11:00
回复 1# iamline
grep怎么不能实现呢?

grep -A3 -B1 urfile

   
作者: iamline    时间: 2013-08-06 11:08
ljwd1000 发表于 2013-08-06 10:55


好像不行
作者: ljwd1000    时间: 2013-08-06 11:10
回复 4# iamline


    哪里不行?
作者: Shell_HAT    时间: 2013-08-06 11:12
回复 4# iamline


[root@ tmp]# seq 9 | grep -A3 -B1 "5"
4
5
6
7
8

这事你怎么看?
作者: iamline    时间: 2013-08-06 11:13
回复 5# ljwd1000


    前面的seq 10 是什么意思啊
作者: ljwd1000    时间: 2013-08-06 11:16

xx.jpg (16.83 KB, 下载次数: 53)

xx.jpg

作者: iamline    时间: 2013-08-06 11:16
回复 6# Shell_HAT


    我这边用grep会把每5行间用“--”隔开,是我看错了,可以的
作者: iamline    时间: 2013-08-06 11:19
ljwd1000 发表于 2013-08-06 11:16


谢谢啊,我用你的awk,结果输出在同一行,用下面那个就行了
作者: ljwd1000    时间: 2013-08-06 11:25
回复 10# iamline


    输出在同一行,变一下OFS就好了。。
作者: xiaopan3322    时间: 2013-08-06 11:33
本帖最后由 xiaopan3322 于 2013-08-06 11:35 编辑

grep -A3 -B1
作者: seesea2517    时间: 2013-08-07 13:51
A不能用,B不能用,可以试试C。

想起一个谜语:
生不能吃,熟不能吃,边烧边吃。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2