我在我公司的软件 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- 左右。
有人可以帮忙吗?
一个潜在的选择:
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
}'