sed 명령에서 -e의 목적은 무엇입니까?

sed 명령에서 -e의 목적은 무엇입니까?

sed -e이 스위치에 대한 문서를 찾을 수 없습니다 . 간단한 교체를 위해 문서가 필요합니까?

예를 들어

sed 's/foo/bar/'

VS

sed -e 's/foo/bar/'

답변1

매뉴얼 페이지에서:

-e script, --expression=script

    add the script to the commands to be executed

따라서 여러 -e옵션을 사용하여 다중 부분 스크립트를 작성할 수 있습니다.

$ sed -e "s/foo/bar/" -e "/FOO/d"

먼저 foo로 바꾼 bar다음 포함된 각 줄을 삭제합니다 FOO.

답변2

이것은 당신에게 도움이 될 수 있습니다:

sed -e '/foo/i\' -e 'bar' -e '/fred/a\' -e 'barny' -e '/harry/c\' -e 'potter' file

각각의 경우 i(삽입), a(추가) 및 c(변경) 명령은 개행 문자로 종료되어야 합니다.

;일반적으로 명령은 eg 로 구분하고 /foo/d;/bar/d} {...eg 로 그룹화 할 수 있지만 명령 /foo/{h;d}의 경우 명령을 구분하는 방법을 제공합니다.i,a,c-e

또 다른 방법은 쉘(bash)을 사용하여 개행 문자를 삽입하는 것입니다.

sed '/foo/i\bar'$'\n''/fred/a\barney'$'\n''/harry/c\potter' file

답변3

도움말에서 깃발의 의미는 다음과 같습니다 sed.-e

 -e script, --expression=script
              add the script to the commands to be executed

이 만남 이후에 혼란스러워지는 것은 당신이 처음이 아닙니다 -e. 귀하의 예에서는 sed 's/foo/bar/'sed -e 's/foo/bar/'동등합니다. 두 경우 모두 s/foo/bar/그렇다.스크립트sed에 의해 실행됩니다. 두 번째 옵션은 더 명확하지만 이것이 자주 사용되는 이유는 아닐 것입니다 -e. 그 이유는 -e동일한 작업을 수행하기 위해 여러 스크립트를 사용할 수 있기 때문입니다 sed. 하지만 하나의 스크립트만 사용하는 경우 왜 이를 사용해야 할까요? 다음 예에서는 이에 대해 설명합니다.

echo "foo" | sed -e 's/foo/bar/' -e 's/bar/foo/'

"foo"가 출력됩니다.

하지만,

echo "foo" | sed 's/foo/bar/' -e 's/bar/foo/'

sed첫 번째 파일은 이제 s/foo/bar/파일 이름으로 해석되므로 실패합니다 . 따라서 미래의 삶을 더 쉽게 만들기 위해 -e오늘 이 로고를 사용할 수 있습니다. 이렇게 하면 나중에 .app 을 사용하여 추가 스크립트를 간단히 첨부할 수 있습니다 -e <script>.

참고: 다른 답변에서는 ;여러 스크립트가 대안으로 제안되었습니다. 어떤 경우에는 이것이 기술적으로 가능하지만, 읽기가 매우 어려운 코드로 빠르게 이어질 수 있으므로 권장되지 않습니다. 여기에서 예를 참조하세요.https://www.grymoire.com/Unix/Sed.html#uh-61

답변4

-e와 동등한 는 --expression다른 표현식에 표시된 것처럼 여러 표현식을 함께 문자열로 묶지 않는 한(공통 아님) 선택 사항입니다.답변.

Aside: ;여러 표현식을 순서대로 실행하기 위해 동일한 표현식에서 대신 사용할 수 있습니다.

관련 정보