Delete

1. pattern space 에 있는 내용을 전부 삭제합니다.
2. pattern space 에 데이터가 없으므로 명령 사이클을 중단하고 다음 사이클을 시작합니다.
3. 읽어들일 라인이 없으면 exit 합니다.

d 명령을 사용할 때 기억해야 될 것은 명령이 실행되면 현재 사이클이 중단되고 새로운 사이클을 시작한다는 것입니다.

1. pattern space 에서 첫 번째 라인을 삭제합니다.
2. 명령 사이클의 BEGIN 위치로 가서 다음 사이클을 시작합니다. ( 이때 라인을 읽어들이지 않습니다 )
3. pattern space 에 라인이 하나만 남았을 경우는 d 명령과 같은 역할을 합니다.

이 명령은 multiple lines 을 처리할 때 사용하는 명령으로 pattern space 에 라인이 하나만 남았을 경우는 삭제되면 이어지는 명령에서 처리할 데이터가 없으므로 d 명령과 같은 역할을 합니다.

예제 1

[FILE] 아래 [LINE] 이 없는 경우 삭제합니다. [LINE] 은 모두 표시합니다.

# 데이터 내용
[FILE]: C:\Users\user\git\build.xml
[FILE]: C:\Users\user\git\dataload-pom.xml
[FILE]: C:\Users\user\git\local.properties
    [LINE]:  [job.mail.toAddress=]
    [LINE]:  [log.mail.toAddress=]
    [LINE]:  [log.mail.client.toAddress=]
    [LINE]:  [bill.report.toAddress=]
[FILE]: C:\Users\user\git\pom.xml
[FILE]: C:\Users\user\git\release.properties
    [LINE]:  [job.mail.toAddress=]
    [LINE]:  [log.mail.client.toAddress=]
.............................................

# /XXX[^\n]*$/ 형식은 pattern space 의 마지막 라인에 XXX 가 있는지 매칭할때 사용하는 방법입니다.
$ sed -E '
    /\[FILE]/{             # [FILE] 라인이 입력되면 
        N                  # `N` 명령으로 다음 라인을 pattern space 에 append

        /\[FILE][^\n]*$/D  # 두 번째 라인도 [FILE] 라인일 경우 `D` 명령으로
                           # 첫 번째 라인을 삭제하고 명령 사이클의 BEGIN 으로 분기
    }
' file

[FILE]: C:\Users\user\git\local.properties
    [LINE]:  [job.mail.toAddress=]
    [LINE]:  [log.mail.toAddress=]
    [LINE]:  [log.mail.client.toAddress=]
    [LINE]:  [bill.report.toAddress=]
[FILE]: C:\Users\user\git\release.properties
    [LINE]:  [job.mail.toAddress=]
    [LINE]:  [log.mail.client.toAddress=]