sed를 사용하여 호스트 이름 목록에서 하위 도메인 접두사를 제거하려고 하는데 정규식을 사용하면 아무것도 대체되지 않습니다. 다음은 작동하지 않는 간단한 예입니다.
echo "subdomainxyz.example.com" | sed 's/[a-z]+\.example\.com//'
특정 하위 도메인을 하드코딩하면 잘 작동합니다.
echo "subdomainxyz.example.com" | sed 's/subdomainxyz\.example.com/example.com/'
답변1
질문을 제출하기 전에 답변을 찾았지만 이미 입력했기 때문에 누군가에게 도움이 될까 해서 게시하겠습니다.
필요한 핵심은 문자 클래스/범위 구문과 더하기 연산자를 사용하는 데 필요한 확장 정규식에 대한 지원을 알리는 -r
플래그(일부 버전에서는)를 추가하는 것 입니다 . 그것은 당신이 해야 할 일과 같습니다 (어떤 이유로 기본값이 확장 정규식이라고 생각했지만 그것은 틀렸습니다).-E
sed
[a-z]+
grep
sed
다음은 실제 예입니다.
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/'