내 응용 프로그램은 Linux, MacOS, HP-UX, Sun Solaris, OSX 등과 같은 모든 버전의 Unix 기반 운영 체제에서 실행됩니다.
sed
텍스트 파일에서 일치하는 문자열을 제거하기 위해 일반적인 위치에서 다음 명령을 사용합니다 .
sed -i '/string1/d' mytextfile
이것이 모든 *nix에서 작동합니까?
답변1
예, sed
모든 Unix 버전에서 작동합니다. 이것은POSIX 표준의 일부: 모든 "공식" Unix에는 모든 Linux 및 BSD 배포판과 마찬가지로 이 기능이 포함되어 있습니다.
이 명령에는 확장명이 다른 여러 가지 버전이 있습니다 sed
. sed
옵션과 언어의 공통 하위 집합을 사용하려는 경우POSIX에 의해 설명됨그러면 명령이 모든 시스템에서 실행됩니다.
답변2
POSIX sed -i
는 중복되고 호환되지 않기 때문에 시행되지 않습니다 sed
. sed
원래는 편집용입니다.개울(따라서 이름은 s
스트림 ed
itor), 파일이 아닙니다. 비대화형으로 파일을 편집하는 POSIX의 올바른 도구는 다음과 같습니다.ed
printf "/text/d\nw" | ed file.txt
안타깝게도 많은 현재 시스템에서는 ed
이를 더 이상 사용되지 않는 것으로 간주하고 POSIX가 의무화되어 있음에도 불구하고 기본적으로 이를 제공하지 않습니다. 하지만 최소한 대부분의 시스템에 쉽게 설치할 수 있어야 합니다(GNU sed Different와 달리 소스에서 코드를 컴파일해야 할 수 있음). .
편집하다:또한 질문의 표현과 달리 명령은 주어진 문자열을 삭제하는 것 이상을 d
수행하며 해당 문자열을 포함하는 모든 줄도 삭제합니다.(s)ed