簡體   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