我知道可以搜索行号(比方说,第#139656504行)并返回它周围的上下文:
grep -n 139656504 -B 5 -A 5 file.txt但当我在压缩文件上使用它时,它什么也没有返回:
zgrep -n 139656504 -B 5 -A 5 file.txt.gz我在macOS Mojave。
有没有办法通过压缩文件来获得这行代码的上下文?
我制作了一个测试文件(test.txt),其中包含:
test1
test2
test3
test4
test5
test6
test7
test8
test9
testBB
test11
test12
test13
test14
test15
test16
test17
test17
test18
test19
test20压缩文件:
pigz test.txt现在如果我运行:
zgrep -n 10 -C 5 test.txt.gz它给了我什么..。(我确保第10行不会有数字10,否则,zgrep将“搜索”10,而不是第10行)
如果第10行是test10而不是testBB,它就可以工作了。但这不是我所期望的。
发布于 2020-03-06 05:28:07
试试这个:
zgrep -n 139656504 -C 5 file.txt.gz注意:-n表示在输出中显示行号
-C 5表示在满足表达式的每行之前显示5行,在每行之后显示5行。
139656504是您要搜索的模式。
执行man grep或man zgrep --看起来所有的命令行开关都适用于这两种情况。
如果您只需要查看特定行的周围行,则可以执行以下操作:
gunzip -c file.txt.gz | sed -n "139656499,139656509p"这意味着-- gunzip将文件压缩到stdout,这样您就可以通过管道将其导入到sed中,sed是一个令人惊叹的实用程序,这里的sed被告知在139656504之前显示第5行,在第5行之后显示第5行。
发布于 2020-03-06 05:58:39
如果要打印特定行号的内容,可以使用awk
awk -v nr=10 'FNR==nr' file或带有行号前缀
awk -v nr=10 'FNR==nr{ print FNR":"$0 }' file或使用5行上下文行
awk -v nr=10 'FNR>=nr-5 && FNR<=nr+5{ print FNR":"$0 }' file或
zcat file.gz | awk ...用于gzipped文件。
https://stackoverflow.com/questions/60554091
复制相似问题