BSD sed 대 GNU sed 및 -i

BSD sed 대 GNU sed 및 -i

Unix iMac 쉘 터미널

sed -i 's/original/new/g' maths.tx  

반환 메시지: sed: -i는 stdin과 함께 사용할 수 없습니다.

답변1

Mac은 자체 기능이 있는 sed및 와 같은 BSD 버전의 유틸리티를 사용합니다 .date

이 특정한 경우에 BSD 버전은 다음과 같습니다.sed 승인하다백업 파일 확장자는 입니다 -i.임의로 선택할 수 있는, GNU 에서처럼 sed.

이와 같이:

sed -i .bak 's/needle/pin/g' haystack

표시된 명령은 파일의 모든 인스턴스를 대체 needle하고 원본 파일은 그대로 유지 pin됩니다 .haystackhaystack.bak

sedMac의 구현 매뉴얼에서:

-i extension
         Edit files in-place, saving backups with the specified extension.  If a zero-length extension is given, no backup will be saved.
         It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in
         situations where disk space is exhausted, etc.

Linux 호스트와 반대로:

  -i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if SUFFIX supplied)

"길이가 0인 확장"은 "확장 없음"과 동일하지 않습니다. 그러면 백업을 완전히 피할 수 있습니다.

sed -i '' 's/needle/pin/g' haystack

답변2

다음과 같이 백업 파일을 지정해야 합니다.

sed -i .bak 's/original/new/g' maths.tx  

관련 정보