선택한 행의 Grep 패턴

선택한 행의 Grep 패턴

pattern 1다음 줄에 가 포함되어 있고 pattern 2로 시작하는 경우에만 줄을 포함하도록 유지하는 방법은 무엇입니까 pattern 3?

예: A다음 줄이 a로 시작하고 패턴을 포함하는 경우에만 Ban으로 시작하는 줄을 유지합니다.B1

입력 파일

A   item1A
B   item1B2
A   item2A
A   item3A
B   item3B1
B   item3CB1
B   item3B2
A   item5A
B   item5B1
A   item6A

예상 출력:

A   item3A
B   item3B1
B   item3CB1
A   item5A
B   item5B1

(현재 시도 중이지만 s 행이 모두 보존되는 grep -e ^A -e B1부작용이 있습니다 )A

답변1

그리고 pcregrep:

pcregrep -M '^(A.*\n)?B.*B1'

그리고 awk:

awk '
  /^B.*B1/ {if (p && last ~ /^A/) print last; print; p=0; next}
  {p=1; last=$0}'

관련 정보