한 줄에 패턴이 포함되어 있고 그 뒤에 같은 패턴의 다른 줄이 오면 첫 번째 줄을 삭제하세요.

한 줄에 패턴이 포함되어 있고 그 뒤에 같은 패턴의 다른 줄이 오면 첫 번째 줄을 삭제하세요.

정말 미안해요... 뇌가 얼어붙어 이해할 수가 없어요. 저는 sed와 패턴 공간을 사용하고 있지만 패턴이 포함된 줄의 모든 항목을 계속 삭제합니다.

패턴이 포함된 첫 번째 행을 삭제한 다음 동일한 패턴이 포함된 다른 행을 삭제하고 싶습니다.

내가 작업 중인 목록에는 동일한 패턴을 포함하는 연속 행이 2개 이상 없습니다.

모드는 "쿼리"입니다

내 데이터는 다음과 같습니다.

Query: A ANNUAL SERVICE FEE                                                                          
       SourceField:               EXP-ANNUAL:       SourceTable:               MASTER
Query: A ANNUAL SERVICE FEE                                                                          
Query: A Edie ACTIVE LNS                                                                             
       SourceField:               LOAN-NO:      SourceTable:               MASTER
Query: A Edie ACTIVE LNS                                                                             
       SourceField:               LO:           SourceTable:               MASTER

이것이 내가 원하는 모습입니다:

Query: A ANNUAL SERVICE FEE                                                                          
       SourceField:               EXP-ANNUAL:       SourceTable:               MASTER                                                                      
Query: A Edie ACTIVE LNS                                                                             
       SourceField:               LOAN-NO:      SourceTable:               MASTER
Query: A Edie ACTIVE LNS                                                                             
       SourceField:               LO:           SourceTable:               MASTER 

답변1

sed '/^Query/{N;/\nQuery/D;}' file

로 시작하는 줄에 Query다음 줄을 패턴 공간에 추가합니다. 다음 줄이 다음으로 시작하면 Query첫 번째 줄을 삭제하세요.

마지막 줄을 인쇄하지 않으려면(마지막 줄이 일치하는 경우 ^Query):

sed -n '/^Query/{N;/\nQuery/D;};p' file

관련 정보