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

时间:2019-07-23 00:20:57

标签: linux grep

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

A(从最近的B开始捕获)
..
..
B
..
..
A(不捕获)
A(捕获,最接近下一个B)
..
..
B
任务:捕获出现在“ B”之前的“ A”。
不能使用grep -r -B 5(或6或7,因为它可以是前面的任何行) grep“ A”
因为“ A”可以是任意多行,所以我需要首先出现该“ A”。
基本上找到每个“ B”的“ A”。
有解决办法吗?

如果不是grep,脚本是什么?

1 个答案:

答案 0 :(得分:0)

使用struct ContentView: View { init() { UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.black] UINavigationBar.appearance().barTintColor = .blue } var body: some View { NavigationView { ZStack { HStack { List(0...10) { test in Spacer() self.background(Color.purple) Text("This is a test") Spacer() self.background(Color.pink) } .background(Color.blue) List(0...10) { test2 in Spacer() Text("Also a test") .background(Color.green) Spacer() } .background(Color.red) } } } .navigationBarTitle( Text("Test"), displayMode: .inline ) } } ,您可以这样做:

awk

当行以awk '/^A/ {f=$0} /^B/ {print f}' file A(capture since nearest to next B) A (capture, nearest to next B) 开头时,它将行存储在变量f
稍后找到A