grep:匹配后输出特定行

grep:匹配后输出特定行

有没有办法使用 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}"

相关内容