我想从 .debug.gz 进行 zgrep 并获取字符串之前和之后的行

问题描述 投票:0回答:1

我在我公司的软件 IBM AIX 上使用 grep,那里没有 GNU,它是默认的,不支持 grep -B -A -C 的功能,所以我发现这个解决方法适用于 普通 grep :

grep -n '123456' file.debugz.gz | cut -d':' -f1 |  xargs  -n1 -I % awk 'NR<=%+3 && NR>=%-2' file.debugz.gz

但是我正在尝试使用 "zgrep""zegrep" 从 .debug.gz 文件中获取值,同时其中包含大量数据和大文件,因此不需要使用gunzip 和搜索在每个 .debug.gz 文件中手动我想使用上述命令,但它不适用于 “zgrep”“zegrep”。

我想显示字符串中的 30+ 和 30- 左右。

有人可以帮忙吗?

unix awk grep aix
1个回答
0
投票

一个潜在的选择:

zcat file.debugz.gz |\
awk '{
    a[NR] = $0
}

/123456/ {
    for (i = (NR - 30); i < NR; i++) {
        print a[i]
    }
    line = NR + 31
}

NR < line {
    print
}

NR == line {
    exit
}'
© www.soinside.com 2019 - 2024. All rights reserved.