繁体   English   中英

grep 字符串在 n 行之前第一次出现,一旦与另一个字符串匹配

[英]grep first occurance of a string n lines prior, once matched with another string

在匹配另一个字符串“B”之后,我需要找到第 n 行之前出现的“A”。

A(从最接近下一个 B 开始捕获)
..
..

..
..
A(不要捕捉)
A(捕获,最靠近下一个 B)
..
..

任务:捕获出现在“B”之前的“A”。
不能使用 grep -r -B 5(或 6 或 7,因为它可能是之前的任何行)"B" | 搜索“A”
因为“A”可以是任意数量的行,我需要首先出现这样的“A”。
基本上找到每个“B”的“A”。
有什么解决办法吗?

如果不是grep,那么这个脚本是什么?

使用awk ,您可以这样做:

awk '/^A/ {f=$0} /^B/ {print f}' file
A(capture since nearest to next B)
A (capture, nearest to next B)

当行以A开头时,它将行存储在变量f
后来当它找到B

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM