$를 사용할 때 sed의 이상한 동작(버그?)

$를 사용할 때 sed의 이상한 동작(버그?)

문제가 발생했는데 이것이 버그인지 아니면 $를 사용하여 행 주소를 지정할 때 이런 일이 발생해야 하는지 잘 모르겠습니다. 기본적으로 다음 명령이 있습니다.

sed -e '$s/test/tset/g'

일반적으로 다음과 같이 실행하고 싶습니다.

blahblah
blahblah
  <-- Cursor is here now

의미: 무언가를 입력하고 Enter를 한 번 누르면 결과가 다음 줄에 표시되지만 다음과 같은 결과가 나타납니다.

blahblah

blahblah
  <-- Cursor is here now.

따라서 기본적으로 $ 기호는 어떻게든 sed가 커서를 빈 줄로 설정하도록 하고 Enter를 다시 누른 후에만 실제로 결과를 표시합니다(즉, Enter를 두 번 눌러야 함). 이런 일이 발생하지 않도록 하는 방법이 있나요? 아니면 버그일 수 있나요? 내 더 복잡한 패턴에서는 이것이 실제로 상황을 많이 망쳤습니다.

답변1

명령은 입력의 마지막 줄에 적용되어야 한다는 것을 알고 있으므로 sed읽을 수 있다는 것이 확인될 때까지 가장 최근에 처리된 줄을 출력할 수 없습니다.그 이후의 라인.

sed편집 스크립트에서는 동일한 동작을 볼 수 없습니다아니요$데이터 변환은 현재 라인이 입력의 마지막 라인인지 여부에 의존하지 않기 때문에 주소가 사용됩니다 .

관련 정보