sed
-e
간단한 교체를 위해 스위치에 대한 설명서를 찾을 수 없습니까?
예 :
sed 's/foo/bar/'
VS
sed -e 's/foo/bar/'
답변
매뉴얼 페이지에서 :
-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
.
답변
이것은 당신을 위해 일할 수 있습니다 :
sed -e '/foo/i\' -e 'bar' -e '/fred/a\' -e 'barny' -e '/harry/c\' -e 'potter' file
각각의 경우 i
(삽입), a
(첨부) 및 c
(변경) 명령은 줄 바꿈으로 종료해야합니다.
일반적으로 명령은 ;
예를 들어 분리하고 } 예를 들어 /foo/d;/bar/d
그룹화 할 수 있지만 명령의 경우 명령 을 분리하는 방법을 제공합니다.{...
/foo/{h;d}
i,a,c
-e
대안은 쉘 (bash)을 사용하여 개행을 삽입하는 것입니다.
sed '/foo/i\bar'$'\n''/fred/a\barney'$'\n''/harry/c\potter' file
답변
-e
--expression
다른 Answer에 표시된 것처럼 여러 표현식을 함께 묶지 않는 경우 (일반적이지 않음)를 제외하고는 ,와 동등한 옵션은 선택 사항 입니다.
옆으로 : ;
여러 표현식을 차례로 실행하기 위해 동일한 표현식에서 대신 사용할 수 있습니다.
답변
도움에 대한 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/
는 IS 스크립트 나오지에 의해 실행된다. 두 번째 옵션은 더 명확하지만 아마도 자주 -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
깃발 을 사용할 수 있습니다. 그러면 앞으로를 사용하여 명령을 추가 스크립트로 추가 할 수 있습니다 -e <script>
.
NB 다른 답변에서 ;
여러 스크립트를 사용하는 대안으로 사용하는 것이 제안되었습니다. 어떤 경우에는 기술적으로 가능하지만 코드를 읽기가 매우 어렵 기 때문에 권장하지 않습니다. https://www.grymoire.com/Unix/Sed.html#uh-61 의 예를 참조하십시오.