Как с помощью KSH преобразовать «12345» в «1.2.3.4.5?»

Как с помощью KSH преобразовать «12345» в «1.2.3.4.5?»

Если у меня есть строка 12345и я хочу преобразовать ее в KSH 1.2.3.4.5, как я могу это сделать?

Я пробовал использовать, cutно это не так просто.

echo "12345" | cut -c1

решение1

Обязательный awkответ:

echo "12345" | awk '$1=$1' FS= OFS="."

Выходные данные:

1.2.3.4.5

Ответ изменен из одного из решений вэтот стек Overflowпочта.

решение2

Регулярное выражение Perl (с поиском и обратными ссылками) отвечает на замену всего на все-плюс-точка, за исключением последнего (предполагая, что это то, о чем был вопрос):

$ echo "12345" | perl -wlpe 's/(.(?=.))/$1\./g'
1.2.3.4.5

решение3

Решение sed, протестированное с ksh и /usr/bin/sed на OpenSolaris

echo "12345" | /usr/bin/sed -e 's/./&\./g' -e 's/\.$//'

Связанный контент