получить часть имени хоста и заменить несколько символов в одной строке в bash - PullRequest
0 голосов
/ 19 декабря 2018
echo $HOSTNAME

дает мне ip-255-25-255-255.Я пытаюсь удалить ip- и заменить - на ..

Я могу сделать:

a=${HOSTNAME#*-}
b=${a//-/.}

, что дает мне 255.25.255.255.

Можно ли как-нибудь сделать это в одной строке?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Использование gsub функции awk:

echo 'ip-255-25-255-255' |awk '{gsub(/^[^-]+-/,"");gsub(/-/,".")}1'
255.25.255.255
0 голосов
/ 19 декабря 2018

Да, есть.

sed 's/^[^-]*-//;s/-/./g' <<< "$HOSTNAME"

дает желаемый результат.

  • s/^[^-]*-// соответствует нулю или большему количеству символов без черты, за которыми следует тире ( см.он онлайн ) и удаляет их,
  • s/-/./g заменяет все тире точками.
...