有没有办法使用 grep 输出匹配后特定行数的行?例如,我想输出匹配的行、匹配后的第 8 行和匹配后的第 17 行。这可能吗?
我知道我可以使用输出接下来的 17 行grep -A17
,但我想知道是否可以得到有用的行,而无需中间的所有内容。
答案1
尝试通过管道传输awk blah | grep stuff -A17 | awk "NR==1{print} NR==8{print} NR==17{print;exit}"
这将仅输出第 1、8 和 17 行。
如果要包含重复模式,可以使用 mod (%) 运算符
awk "(NR-1)%17 == 0{print} (NR-8)%17 == 0{print} (NR-17)%17 == 0{print}"