Обязательный awk
ответ:
echo "12345" | awk '$1=$1' FS= OFS="."
Выход:
1.2.3.4.5
Ответ изменен одним из решений в этом сообщении переполнения стека .
С помощью KSH, если у меня есть строка, 12345
и я хочу, чтобы она была преобразована в 1.2.3.4.5
, как я могу это сделать?
Я пытался использовать, cut
но это не так просто.
echo "12345" | cut -c1
Обязательный awk
ответ:
echo "12345" | awk '$1=$1' FS= OFS="."
Выход:
1.2.3.4.5
Ответ изменен одним из решений в этом сообщении переполнения стека .
Perl regex (с поиском и обратными ссылками) отвечает, чтобы заменить все на «все плюс плюс точка», кроме последнего (при условии, что это был вопрос):
$ echo "12345" | perl -wlpe 's/(.(?=.))/$1\./g' 1.2.3.4.5
A sed solution tested with ksh and /usr/bin/sed on OpenSolaris
echo "12345" | /usr/bin/sed -e 's/./&\./g' -e 's/\.$//'
Это должно работать. Протестировано в bash
и ksh
в Mac OS X:
echo "12345" | sed 's/\(.\\)/\1./g' | rev | cut -c 2- | rev
Выход:
1.2.3.4.5
И разбивка команды выглядит так: