是否可以从 *each* grep 匹配中获取最后 N 行上下文?

问题描述 投票:0回答:1

考虑以下输入文件:

FixedHeader
Body1
Body2
BodyX
BodyY
BodyZ

Unrelated text111
Unrelated text551
Unrelated text111
Unrelated text551

FixedHeader
Body3
Body4
BodyX
BodyY
BodyZ

Unrelated text111
Unrelated text551

FixedHeader
Body5
Body6
BodyA
BodyB
BodyZC

我可以 grep 查找

FixedHeader
并使用以下命令拉出它后面的五行:

egrep -A5 "FixedHeader"

但是,但我想做的是识别

FixedHeader
并始终抓住它后面的 5 行,但不输出任何其余的上下文。

有没有办法在 grep 匹配的上下文中输出向下 N 行?

我并不特别喜欢 grep,尽管单行语句如果存在的话是更好的选择。

grep
1个回答
0
投票

我想出了如何用

awk
做到这一点:

awk "BEGIN{target_line=-1} /FixedHeader/ {target_line=NR + 5} NR==target_line" input.log
© www.soinside.com 2019 - 2024. All rights reserved.