호스트 이름을 잘라내는 정규식

호스트 이름을 잘라내는 정규식

내 호스트 이름을 왼쪽에서 두 개의 "부분"으로 자르려고 합니다. 호스트 이름은 다음과 같습니다.

servername-01.location.domain.com

또는

servername-01.location.test.domain.com

다음과 같이 줄여야 합니다.

servername-01.location

일부 도메인 이름에는 더 긴 "접미사"가 있기 때문에 처음 두 개의 "부분"이 필요하지만 두 번째 "."는 포함하지 않습니다.

다음 명령을 사용하여 접미사에서 호스트 이름을 제거했지만 접미사에 대한 하위 도메인 수가 변경될 수 있으므로 더 이상 작동하지 않는다는 것을 깨달았습니다.

${HOSTNAME%.*.*}

어떤 도움이라도 대단히 감사하겠습니다!

답변1

당신은 그것을 사용할 수 있습니다

SHORTHOST=$(cut -d "." -f 1-2 <<< $HOSTNAME)

매 사이클마다 원래 호스트 이름을 필드로 자르고 .처음 두 개만 인쇄합니다.

답변2

실제로 매개변수 확장을 통해 이러한 가변적인 부분을 제거하는 것은 어렵다. 하지만 우회적인 방법이 있습니다. 먼저 처음 두 세그먼트를 삭제하고(실제로는 유지하고 싶습니다) 꼬리 부분을 남겨둔 다음 다음을 사용할 수 있습니다.저것원래 문자열에서 제거할 부분으로.

그래서:

$ hostname=servername-01.location.test.domain.com
$ echo "${hostname%.${hostname#*.*.}}"
servername-01.location

( .${hostname#*.*.}.test.domain.com, 그다음에는 ${hostname%.test.domain.com}그렇습니다 servername-01.location.)

관련 정보