나는 다음 코드를 사용하여 00 PROGRAM
파일의 여러 블록을 성공적으로 찾고 해당 블록의 다음 줄을 모두 제거했지만 XYZ
.
sed -n '/00 PROGRAM/,/^$/{/./{h;d}; x;/XYZ/p}' file
이제는 그 반대가 필요합니다. Group cat
다음 빈/빈 줄에 도달할 때까지 블록의 다음 줄만 찾아서 삭제하면 됩니다 . 초기 파일은 pattern
파일에 보관되어야 합니다. 파일에는 빈 줄이 남아 있어야 합니다. 다른 텍스트 줄도 파일에 남아 있어야 합니다. 누구든지 이 구조가 제대로 작동하도록 변경을 제안하거나 새로운 코드 줄을 제안할 수 있습니까?
코드가 실행되기 전:
Group cat
Group div
Group member1
Group member2
Group select
<empty line>
Common cat
Last update
코드가 실행된 후:
Group cat
<empty line>
Common cat
Last update
그런 다음 다음 패턴 일치를 검색하고 해당 블록의 줄을 삭제하는 등의 작업을 수행합니다.
답변1
다음은 원하는 출력을 생성합니다.
sed -e '/Group cat/,/^$/{//b' -e '/./d;}' file
첫 번째 Group cat
줄 에서는 b
명령이 실행되어 스크립트 끝으로 분기하고 해당 줄을 인쇄합니다(기본 동작).
명령은 다음 빈 줄까지 다른 모든 줄에서 실행되지만 d
, 빈 줄 자체에서는 실행되지 않습니다.