내가 읽고있다https://stackoverflow.com/a/10010364/156458, -e
sed 옵션에 대한 질문이 있습니다.
내가 맞다면 -e
인라인 sed 명령 이전에 사용됩니다. 하지만 .sed 없이 인라인 sed 명령을 지정할 수 있습니다 -e
. 예를 들어 다음 두 가지가 나에게 동일하게 작동합니다.
$ echo foo | sed 's/foo/bar/g'
bar
$ echo foo | sed -e 's/foo/bar/g'
bar
-f
sed 스크립트를 지정할 필요가 없습니다 . 언제 그것이 필요합니까 -e
? 처음에 제공된 링크의 특정 경우에 왜 필요한가요 -e
?
감사해요.
답변1
man sed
이것은 sed() 매뉴얼 페이지에 답변되어 있습니다.
-e script
,--expression=script
실행할 명령에 스크립트를 추가합니다.
그리고
no
-e
,--expression
[...] 옵션이 제공되면 옵션이 아닌 첫 번째 인수가sed
해석될 스크립트로 사용됩니다. 나머지 모든 인수는 입력 파일의 이름입니다. 입력 파일이 지정되지 않으면 표준 입력을 읽습니다.
따라서 매개변수가 하나만 있으면 스크립트 sed
로 처리됩니다 . sed
매개변수가 여러 개인 경우 -e
또는 를 사용하여 어떤 매개변수가 스크립트 --expression
인지 확인 해야 합니다.sed
특정 예에서 두 가지 선택은 동의어입니다.
답변2
여러 표현식을 code 로 전달하려는 경우 일반적 -e
으로 (with)를 사용하려고 합니다.-f
sed
다음에 주어진 표현식 -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
-e
sed
csh
ksh
편집하다그들을).
다음의 경우:
sed 's/foo/bar/g'
그리고
sed -e 's/foo/bar/g'
전혀 차이가 없습니다.