연속된 두 행의 두 패턴을 확인하고 두 번째 패턴이 다음 행과 일치하면 첫 번째 행을 삭제하고 싶습니다. [닫기]

연속된 두 행의 두 패턴을 확인하고 두 번째 패턴이 다음 행과 일치하면 첫 번째 행을 삭제하고 싶습니다. [닫기]

두 개의 연속된 행에서 두 개의 패턴(a1과 a2)을 확인하고 두 번째 패턴(a2)이 다음 행에서 일치하면 첫 번째 행(패턴 a1이 있는 행)을 삭제합니다.

입력하다

a1
b1
a1
a2
c1
c2
a1
b1
a1
a2

산출

a1
b1
a2
c1
c2
a1
b1
a2

답변1

를 사용하면 루프 sed를 실행하여 다음과 같이 두 행을 함께 처리할 수 있습니다 N;P;D.

sed 'N;s/a1\na2/a2/;P;D'

답변2

얼마나 멀리 갈 것인가?

awk '/a1/ {T = $0; getline; if (!/a2/) print T} 1' file

이해합니다?

관련 정보