sed 결과의 마지막 개행 문자는 어디에서 왔습니까?

sed 결과의 마지막 개행 문자는 어디에서 왔습니까?

저는 sed의 다양한 명령을 배우고 몇 가지 실험을 하고 있습니다. 내가 시도하는 명령은 다음과 같습니다

root:[~]# seq 7 | sed -n '1~2H; 2~2{G;p}'
2

1
4

1
3
6

1
3
5
root:[~]#

나는 명령을 분석했고 숫자 뒤의 마지막 개행 문자가 5거기에 있어서는 안 된다고 생각했습니다. 아래는 내 분석입니다.

여기에 이미지 설명을 입력하세요.

내 분석에 따르면 출력은 빨간색 배경의 셀이어야 합니다. 보시다시피 마지막 개행 문자가 없습니다. 내가 어디서 잘못됐나요? 미리 감사드립니다.

답변1

p개행 문자 추가:

% printf 1 | sed 'p;s/1/2/'
1
2%

볼 수 있듯이 2인쇄된 내용에는 후행 개행 문자가 없지만 그 앞에 있는 1(from ) p이 있습니다.

답변2

이제 답을 찾은 것 같아요. POSIX sed의 문서https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html, 이는 다음과 같습니다.

패턴 공간이 표준 출력이나 명명된 파일에 쓸 때마다 sed는 즉시 개행 문자를 따라야 합니다.

이는 p명령이 항상 개행뿐만 아니라 패턴 공간도 인쇄한다는 것을 의미합니다. 이는 또한 2\n\n1, 및 4\n\n1\n3뒤에 개행 문자가 있는 이유를 설명합니다 6\n\n1\n3\n5.

이 글에 잘못된 부분이 있다고 생각하시면 정정해 주시기 바랍니다. 감사해요.

관련 정보