Print

1. 현재 pattern space 에 있는 내용을 프린트합니다.

p 명령은 주로 -n 옵션과 함께 사용됩니다. -n 옵션을 사용하지 않은 상태에서 p 명령을 사용하면 p 명령에 의해 한번, 명령 사이클이 끝날때 sed 에 의해 한번, 두번 pattern space 의 내용이 출력됩니다.

$ seq 111 111 555 | sed '3p'
111
222
333
333      # '-n' 옵션을 사용하지 않은 상태이므로 3번 라인이 두번 출력
444
555

라인이 pattern space 에 입,출력 되는 과정

새로운 명령 사이클이 시작되거나 아니면 n, N 명령에 의해 입력 스트림으로 부터 라인이 하나 pattern space 에 입력되면 위 그림에서 1번 상태가 됩니다. 이때 한가지 주목해야 될 점은 newline 이 pattern space 밖으로 제외된다는 점입니다. 그러므로 수정 명령이 적용될때 newline 은 포함되지 않습니다. 사용자가 입력한 명령들이 pattern space 에 적용되고 명령 사이클이 끝나거나, 아니면 사이클 중에 p 명령을 실행했을 경우 그림 2번 에서와 같이 현재 pattern space 에 있는 내용과 제외되었던 newline 더해져서 출력됩니다.

위의 경우는 입력되는 라인에 newline 이 포함되는 일반적인 경우에 해당합니다. 가령 bash 에서 echo -n 111 명령을 사용하게 되면 출력에 newline 이 포함되지 않게 되는데요. 이때는 sed 명령의 출력에도 newline 이 포함되지 않게 되므로 개행이 되지 않습니다.

$ echo 111 | sed ''                  
111                                  # 입력되는 라인에 newline 이 포함되는 경우
mug896@EliteBook [pts/7] ~/tmp

$ echo -n 111 | sed ''               # echo 명령에 -n 옵션을 사용
111mug896@EliteBook [pts/7] ~/tmp    # 입력되는 라인에 newline 이 없으므로
$                                    # 출력때 개행이 되지 않는다.

명령 사이클이 끝나거나, p 명령에 의해서 pattern space 에 있는 내용이 프린트될 때는 현재 pattern space 에 있는 전체 내용이 프린트됩니다.

1. pattern space 에서 첫번째 라인만 프린트합니다.

pattern space 에 라인이 하나뿐이 없으면 p 명령과 차이가 없습니다. 이 명령은 주로 multiple lines 를 다룰 때 pattern space 에서 첫 번째 라인을 삭제하는 D 명령과 함께 사용됩니다.