sed + sed 파이프라인을 최소화하고 한 번에 sed를 완료하는 방법

sed + sed 파이프라인을 최소화하고 한 번에 sed를 완료하는 방법

두 개의 다른 sed 파이프가 필요 없이 하나의 sed 명령으로 다음을 수행할 수 있습니까?

sed s"/obbama/trump/" | sed s'/"//g' | sed s'/://g' 

여기에 설명된 sed에서는 obbama라는 단어를 trump로 바꾸고 ' " ' 및 ':' 문자를 제거해야 합니다.

답변1

~에서POSIX sed 매뉴얼 페이지

스크립트는 스크립트 피연산자 문자열 또는 옵션 인수의 조합에서 얻어야 합니다.-e 스크립트그리고-f 스크립트 파일옵션.

첫 번째 답변("스크립트 피연산자 문자열")은 기본적으로 여기의 다른 답변(세미콜론으로 구분)에 의해 처리됩니다.

그리고 -e:

$ sed -e "s/obbama/trump/" -e 's/"//g' -e 's/://g' 

그리고 -f:

$ cat sed-script
s/obbama/trump/
s/"//g
s/://g
$ sed -f sed-script

그런데 좀 더 전통적인 접근 방식은 예제에서 수행한 각 대체 지시어에 대해 따옴표 안에 "s"를 넣는 것입니다 -e.

답변2

sedsh, awk, perl 또는 다른 언어와 마찬가지로 스크립트에서 여러 명령문을 허용하는 스크립팅 언어입니다. 세미콜론 ;이나 개행 문자를 사용하여 각 sed 문을 구분할 수 있습니다 . 예를 들어

sed 's/obbama/trump/; s/"//g; s/://g'

또는

sed 's/obbama/trump/
s/"//g
s/://g'

후행 공백 문자 ;는 선택 사항이지만 IMO는 sed 스크립트를 더 읽기 쉽게 만듭니다.

관련 정보