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: ;
여러 표현식을 순서대로 실행하기 위해 동일한 표현식에서 대신 사용할 수 있습니다.