답변:
"|" 특별한 의미를 얻으려면 백 슬래시가 필요합니다.
echo "blia blib bou blf" | sed 's/bl\(ia\|f\)//g'
당신이 원하는 것을 할 것입니다.
아시다시피, 다른 모든 것이 실패하면 매뉴얼 :-)을 읽으십시오.
GNU sed 사용자 매뉴얼 , 3.3 정규 표현식 구문 개요 :
`REGEXP1 \ | REGEXP2 '
REGEXP1 또는 REGEXP2와 일치합니다.
백 슬래시를 참고하십시오 ...
불행히도 정규 표현식 구문은 실제로 표준화되지 않았습니다. "특수 문자"가 필요한 것과 그렇지 않은 것에는 다른 많은 변형이 있습니다. 일부는 심지어 구성 가능하거나 스위치에 의존합니다 (GNU grep
에서 와 같이 세 개의 다른 정규식 방언 사이를 전환 할 수 있음).
이 답변은 특히 GNU sed에 대한 것 입니다. sed
BSD에서 다르게 사용되는 것과 같은 다른 변형 이 있습니다 .
sed
대체를 지원하지만 "확장 된"정규식 구문 ( -E
) 만 사용 합니다. 이는 파이프 나 괄호에 백 슬래시가 없음을 의미합니다.echo "blia blib bou blf" | sed -E 's/bl(ia|f)//g'