[英]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.