sed에 대한 한 번의 호출로 여러 번 편집

sed에 대한 한 번의 호출로 여러 번 편집

sed를 사용하여 구성 파일을 편집하려고 합니다. 바꾸고 싶은 라인이 몇 개 있습니다. Linux에서는 내부 편집이 허용된다는 것을 알고 있지만 sed -i백업 파일에 저장해야 합니다. 그러나 백업 파일이 여러 개 있는 것을 피하고 모든 변경 사항을 한 번에 적용하고 싶습니다.

이를 수행할 수 있는 방법이 있습니까, sed -i아니면 더 나은 옵션이 있습니까?

답변1

반복하여(또는 스크립트가 파일에 있는 경우) 여러 작업을 수행할 수 있습니다 sed.-e-f

sed -i -e 's/a/b/g' -e 's/b/d/g' filein-place 라는 단일 파일에서 두 가지를 모두 변경합니다 file. 백업 파일이 없습니다.

sed -ibak -e 's/a/b/g' -e 's/b/d/g' filein-place 라는 단일 파일에서 두 가지를 모두 변경합니다 file. 라는 이름을 사용하세요 filebak.

답변2

여러 옵션을 사용하는 것 외에도 -e줄 바꿈이나 세미콜론을 사용하여 단일 sed 스크립트 내에서 sed 명령을 구분할 수 있습니다.

이는 스크립트가 명령줄의 단일 행이든 스크립트 파일이든 마찬가지입니다.

예를 들어

sed -e 's/a/b/g ; s/b/d/g' file

주변 공백 문자는 ;선택 사항입니다. 여기서는 세미콜론이 눈에 띄도록 사용하고 있습니다. 일반적으로 명령 사이의 공백은 명령을 구분하는 개행 문자를 제외하고는 무시됩니다. 그러나 명령 내의 공백은 중요할 수 있고 종종 중요하다는 점을 잊지 마십시오.

또는:

sed -e 's/a/b/g
        s/b/d/g' file

답변3

또 다른 옵션은 이전에 .it ex로 알려진 옵션 입니다. 실제로는vi이것내부 스크립트 파일 편집을 위해 선호되는 POSIX 도구입니다. Perl보다 유연하고 sed -iPerl보다 이식성이 훨씬 뛰어납니다. (Windows 세계에서 멀리 떨어져 있다면,틀림없이Perl보다 이식성이 뛰어납니다. )

ex적어도 , 및 Perl을 많이 사용하는 것과 비교하면 sed이 Stack Exchange에서 사용되는 샘플 명령이 상대적으로 부족합니다 awk. 그러나 나는 나 자신을 탐구했다.POSIX 사양ex나는 그 이후로 그것을 응원해 왔습니다. 나는 ex여기와 vi/Vim 스택 교환에 많은 답변을 썼습니다:

추가 자료:

관련 정보