sed - 교체 없이 간단한 정규식 교체

sed - 교체 없이 간단한 정규식 교체

sed를 사용하여 호스트 이름 목록에서 하위 도메인 접두사를 제거하려고 하는데 정규식을 사용하면 아무것도 대체되지 않습니다. 다음은 작동하지 않는 간단한 예입니다.

echo "subdomainxyz.example.com" | sed 's/[a-z]+\.example\.com//'

특정 하위 도메인을 하드코딩하면 잘 작동합니다.

echo "subdomainxyz.example.com" | sed 's/subdomainxyz\.example.com/example.com/'

답변1

질문을 제출하기 전에 답변을 찾았지만 이미 입력했기 때문에 누군가에게 도움이 될까 해서 게시하겠습니다.

필요한 핵심은 문자 클래스/범위 구문과 더하기 연산자를 사용하는 데 필요한 확장 정규식에 대한 지원을 알리는 -r플래그(일부 버전에서는)를 추가하는 것 입니다 . 그것은 당신이 해야 할 일과 같습니다 (어떤 이유로 기본값이 확장 정규식이라고 생각했지만 그것은 틀렸습니다).-Esed[a-z]+grepsed

다음은 실제 예입니다.

echo "subdomainxyz.example.com" | sed -r 's/[a-z]+\.example\.com/example.com/'

편집(크레딧 steeldriver):

더하기 기호를 벗어나면 -r이 필요하지 않습니다. 예:

echo "subdomainxyz.example.com" | sed 's/[a-z]\+\.example\.com/example.com/'

관련 정보