sed N 및 P 여러 줄 명령 옵션이 예상대로 작동하지 않습니다.

sed N 및 P 여러 줄 명령 옵션이 예상대로 작동하지 않습니다.

데이터 샘플:

output=$(cat <<EOF
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
This is line 6.
EOF
)
echo "${output}" > ~/data8.txt

다음 두 줄이 동일한 결과를 반환하는 이유는 무엇입니까?

sed '{
N
3,$P
}' ~/data8.txt

This is line 1. 
This is line 2. 
This is line 3. 
This is line 3. 
This is line 4. 
This is line 5. 
This is line 5. 
This is line 6.


sed '{
N
4,$P
}' ~/data8.txt

위의 줄이 반환될 것으로 예상합니다.

This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 4.
This is line 5.
This is line 5.
This is line 6.

하지만 다음과 같이 반환됩니다.

This is line 1.
This is line 2.
This is line 3.
This is line 3.
This is line 4.
This is line 5.
This is line 5.
This is line 6.

이 이상한 동작을 해결하는 데 도움을 주시겠습니까?

답변1

3행을 읽으면 명령이 4행을 추가하므로 N주소가 4,$일치하고 P명령이 실행되어 버퍼의 첫 번째 행인 3행이 인쇄됩니다.

3,$3행과 4행을 함께 읽으므로 결과는 동일하므로 주소가 이거나 이든 상관없습니다 4,$.

관련 정보