sed가 한 줄이 아닌 두 줄을 삭제했는데, 왜 그런가요? [복사]

sed가 한 줄이 아닌 두 줄을 삭제했는데, 왜 그런가요? [복사]

이 텍스트 파일()에서 줄을 삭제하려고 합니다 foo.txt.

cat
mouse

animals: 2

끝에서 두 줄을 제거하고 싶습니다.


animals: 2

그래서 나는 마침내 다음과 같은 결론에 이르렀습니다.

cat
mouse

그러나 을 사용하면 variable="$(sed '$d' foo.txt)"하나만 지정했는데도 두 줄이 모두 삭제된 것처럼 보입니다 $d. 이렇게 하면 내가 원하는 결과를 얻을 수 있지만 왜 이런 일이 발생하는지 궁금하지 않을 수 없습니다. 출력을 변수에 저장하지 않으려고 하면 다음과 같은 출력이 표시됩니다.

user$ sed '$d' foo.txt
cat
mouse

user$ 

이상한 점은 을 사용하면 $ sed '$d;$d' foo.txt해당 animals: 2줄만 제거되고 그 앞의 개행 문자는 제거되지 않는다는 것입니다.

누구든지 나를 위해 이 미스터리를 풀어줄 수 있나요? 감사해요.

참고로 이 예에서는 BSD sed가 사용되었습니다.

관련 정보