sed 명령으로 파일을 영구적으로 변경하려면 어떻게해야합니까? 단지 같은 일을하는

이것이 가능한가? 다음 명령이 수행 할 수있는 곳을 읽었습니다.

sed -e [명령] [파일]

그러나 그것은 단지 같은 일을하는 것처럼 보였다

sed [명령] [파일]

(변경 사항을 저장하지 않았습니다). sed를 사용 하여이 작업을 수행 할 수있는 방법이 있습니까?



답변

나는 당신이 찾고 있다고 생각합니다 -i:

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

          edit files in place (makes backup if SUFFIX supplied)

예를 들면 다음과 같습니다.

$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld

접미사를 제공하면 백업 파일이 생성됩니다.

$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt  foo.txt.bak

입력 파일이 수정되고 원본 파일 데이터가 포함 된 백업이 생성됩니다.

또한 이것은 GNU 용 sed이며, 구현 마다 형식에 약간의 차이sed있습니다.


답변

이 솔루션은 HPUX (UNIX)에서 작동합니다.

1.
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh:

2.
perl -pi -e 's/Error/NO_Error/g' test1.sh

삼.
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh


답변

-e옵션은 여러 sed명령 을 실행하기위한 것입니다

sed -e 's/linux/unix/' -e 's/os/OS/' file.txt

고려 file.txt하다

linux os

O / P는

unix os

-i 옵션은 변경 사항을 영구적으로 저장합니다 …


답변