sed에는 언제 "-e"가 필요합니까?

sed에는 언제 "-e"가 필요합니까?

내가 읽고있다https://stackoverflow.com/a/10010364/156458, -esed 옵션에 대한 질문이 있습니다.

내가 맞다면 -e인라인 sed 명령 이전에 사용됩니다. 하지만 .sed 없이 인라인 sed 명령을 지정할 수 있습니다 -e. 예를 들어 다음 두 가지가 나에게 동일하게 작동합니다.

$ echo foo | sed  's/foo/bar/g'
bar

$ echo foo | sed -e 's/foo/bar/g'
bar

-fsed 스크립트를 지정할 필요가 없습니다 . 언제 그것이 필요합니까 -e? 처음에 제공된 링크의 특정 경우에 왜 필요한가요 -e?

감사해요.

답변1

man sed이것은 sed() 매뉴얼 페이지에 답변되어 있습니다.

-e script, --expression=script실행할 명령에 스크립트를 추가합니다.

그리고

no -e, --expression[...] 옵션이 제공되면 옵션이 아닌 첫 번째 인수가 sed해석될 스크립트로 사용됩니다. 나머지 모든 인수는 입력 파일의 이름입니다. 입력 파일이 지정되지 않으면 표준 입력을 읽습니다.

따라서 매개변수가 하나만 있으면 스크립트 sed로 처리됩니다 . sed매개변수가 여러 개인 경우 -e또는 를 사용하여 어떤 매개변수가 스크립트 --expression인지 확인 해야 합니다.sed

특정 예에서 두 가지 선택은 동의어입니다.

답변2

여러 표현식을 code 로 전달하려는 경우 일반적 -e으로 (with)를 사용하려고 합니다.-fsed

다음에 주어진 표현식 -e과 다음에 주어진 파일의 내용은 (개행 문자를 사용하여) 연결되어 스크립트를 -f형성합니다 . sed리터럴 표현식만 전달하려는 경우 이를 생략 -e하고 해당 표현식을 옵션이 아닌 첫 번째 인수로 전달할 수 있습니다 sed.

sed -e s/foo/bar/ -f file.sed -e 'a\' -e foo

실행과 동일:

sed 's/foo/bar/
content of file.sed
a\
foo'

w// 명령 뒤와 구현에 따라 더 많은 위치와 같은 일부 위치가 있기 때문에 구분된 명령을 사용할 수 없고 일부 위치에서는 r위의 것과 같은 개행 문자가 필요하므로 여러 s를 사용하는 것은 예약된 명령 방법입니다. 한 줄 명령(여러 줄 명령 입력을 어색하게 만드는 이와 같은 셸 또는 여러 줄 명령 입력을 어색하게 만드는 이와 같은 셸에 유용함)#;a-esedcshksh편집하다그들을).

다음의 경우:

sed 's/foo/bar/g'

그리고

sed -e 's/foo/bar/g'

전혀 차이가 없습니다.

관련 정보