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

Linux grep一个字符串的第一次出现在n行之前,一旦与另一个字符串匹配,linux,grep,Linux,Grep,我需要找到在匹配另一个字符串B之后,在n行之前出现的第一个A 说 A最靠近下一个B的位置 .. .. B .. .. 一个不捕捉的人 A捕获,离下一个B最近 .. .. B 任务:捕获在B之前发生的。 不能使用grep-r-b5或6或7,因为它可以是B | grep A之前的任何行 因为A可以是任意数量的前几行,我需要先出现这样的前几行。 基本上找到每个B的A。 有解决办法吗 如果不是grep,该脚本是什么?使用awk,您可以执行以下操作: awk '/^A/ {f=$0} /^B/ {prin

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

A最靠近下一个B的位置 .. .. B .. .. 一个不捕捉的人 A捕获,离下一个B最近 .. .. B 任务:捕获在B之前发生的。 不能使用grep-r-b5或6或7,因为它可以是B | grep 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时,在python中尝试反向搜索而不是正向搜索,结果成功了!伪代码:>--用于reversedlistopensys.argv[1]:>-->--logline=logline.rstrip'\n'>-->-->如果B:在logline:>-->-->-->-->--flag==1>-->--如果logline中的A和flag==1:>-->--Address.appendlogline+\n>-->-->--flag==0