![sed가 한 줄이 아닌 두 줄을 삭제했는데, 왜 그런가요? [복사]](https://linux55.com/image/179382/sed%EA%B0%80%20%ED%95%9C%20%EC%A4%84%EC%9D%B4%20%EC%95%84%EB%8B%8C%20%EB%91%90%20%EC%A4%84%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%96%88%EB%8A%94%EB%8D%B0%2C%20%EC%99%9C%20%EA%B7%B8%EB%9F%B0%EA%B0%80%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
이 텍스트 파일()에서 줄을 삭제하려고 합니다 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가 사용되었습니다.