Регулярное выражение для сокращения имени хоста

Если вы хотите проверить, что файл в целом содержит ряд десятичных цифр, за которыми, возможно, следует .и другие цифры, а затем необязательный символ новой строки, вы можете сделать:

is_valid() {
   awk 'END{exit(!(NR == 1 && /^[0-9]+(\.[0-9]+)?$/))}' < "$1"
}

if is_valid /var/VERSION/Version_F35_project_usa; then
  echo the file has the right kind of content
else
  echo >&2 the file does not have the right kind of content
fi
0
07.11.2019, 14:32
2 ответа

Вы можете использовать

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

, который разрежет исходное имя хоста на поля для каждой точки .и распечатает только первые два.

0
28.01.2020, 03:08

Действительно, трудно удалить переменную часть, подобную этой, одним расширением параметра. Но есть обходной способ сделать это, мы можем сначала удалить два первых сегмента (, которые мы на самом деле хотим сохранить ), оставив конец, а затем использовать этот как удаляемую часть. из исходной строки.

Так:

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

(.${hostname#*.*.}— это .test.domain.com, а затем ${hostname%.test.domain.com}— это servername-01.location.)

0
28.01.2020, 03:08

Теги

Похожие вопросы