두 개의 다른 sed 파이프가 필요 없이 하나의 sed 명령으로 다음을 수행할 수 있습니까?
sed s"/obbama/trump/" | sed s'/"//g' | sed s'/://g'
여기에 설명된 sed에서는 obbama라는 단어를 trump로 바꾸고 ' " ' 및 ':' 문자를 제거해야 합니다.
답변1
스크립트는 스크립트 피연산자 문자열 또는 옵션 인수의 조합에서 얻어야 합니다.-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
sed
sh, awk, perl 또는 다른 언어와 마찬가지로 스크립트에서 여러 명령문을 허용하는 스크립팅 언어입니다. 세미콜론 ;
이나 개행 문자를 사용하여 각 sed 문을 구분할 수 있습니다 . 예를 들어
sed 's/obbama/trump/; s/"//g; s/://g'
또는
sed 's/obbama/trump/
s/"//g
s/://g'
후행 공백 문자 ;
는 선택 사항이지만 IMO는 sed 스크립트를 더 읽기 쉽게 만듭니다.