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}"

相關內容