+ -
当前位置:首页 → 问答吧 → awk 实现 grep -A3 -B3 的效果,文本10G行

awk 实现 grep -A3 -B3 的效果,文本10G行

时间:2011-03-23

来源:互联网

比如 grep -A3 -B3  B  text.txt

我自己的解法如下,但想集思广益下,应该有其他的思路, 并且,我这个方法,如果文本行数在 10G级别的话,那得耗费多少内存呀?

{ ra[NR]=$0}
/B/{ for(i=NR-3;i<=NR+3;i++){if(i>0)ln_pflag[i]=1} }
END { for(j=1;j<=NR;j++){ if(ln_pflag[j]==1)print ra[j] } }

作者: unixzhong   发布时间: 2011-03-23

本帖最后由 yinyuemi 于 2011-03-23 10:55 编辑

awk '{a[NR]=$0}/B/{for(i=NR-3;i<NR;i++)print a;print;for(j=1;j<=3;j++) {getline;print};exit}'

作者: yinyuemi   发布时间: 2011-03-23

awk '/B/{for(i in a){print a[i]}for(i in a){getline;print}}{a[NR%3]=$0}'

前三行没顺序

作者: ziyunfei   发布时间: 2011-03-23

需要顺序的话 可以改改

作者: ziyunfei   发布时间: 2011-03-23

sed -n '
/B/ !{
H
x
s/^.*\n\(.*\n.*\n.*\)$/\1/
x}
/B/{
H
n
H
n
H
n
H
n
x
p
q}' file

作者: yinyuemi   发布时间: 2011-03-23

热门下载

更多