-1

Итак, я чрезвычайно новичок в написании сценариев оболочки Bash, и до этого момента я был довольно успешным. Я использую BASH, чтобы исправить проблему ...

Я хочу превратить базовое доменное имя: Buddies.forlife.com в | 07 | Buddies | 07 | forlife | 03 | com

По сути, мне нужно, чтобы считать буквы и преобразовать его в шестнадцатеричное. Чтобы было понятно, не конвертируйте доменное имя в шестнадцатеричное, а количество букв в шестнадцатеричное. Мне трудно заменить период "."

Я надеюсь, вы понимаете, чего я пытаюсь достичь ...

Спасибо за помощь в продвижении!

1 ответ1

0

Вот простой способ сделать это с помощью awk

echo "Buddies.forlife.com" | awk -F '.' '{ printf( "|0x%x|%s|0x%x|%s|0x%x|%s\n", length($1),$1, length($2),$2, length ($3), $3 )}'
|0x7|Buddies|0x7|forlife|0x3|com

Команда awk устанавливает разделитель полей -F '.' к периоду, поэтому каждый сегмент считается его собственным полем.

Затем мы можем ссылаться на эти поля по $1, $2 and $3 , использовать length встроенной функции, чтобы получить количество символов для каждого поля, и использовать printf для вывода результатов (%x для шестнадцатеричных чисел, %s для исходных строк и разделите поля вывода, используя символ '|' в указанном вами формате.

Префикс 0x обычно используется для обозначения шестнадцатеричных чисел, но может быть изменен на что-то другое (или ничего) по мере необходимости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .