Это предполагает, что существует некоторый нечисловой текст после числа:
echo "loremipsumdolorsit2367amet" \
| sed -r -e 's/[0-9]/0000000&/' -e 's/0*([0-9]{8}[^0-9])/\1/'
Результат: loremipsumdolorsit00002367amet
Это не предполагает что:
... | sed -r -e 's/[0-9]/0000000&/' -e 's/0*([0-9]{8}([^0-9]|$))/\1/'
Они используют ДО шаблоны для sed. Много sed реализаций используют -r
флаг для определения этого; некоторое использование -E
флаг; некоторое использование оба. В настоящее время способность использовать ДО шаблоны в sed не является частью стандарта POSIX, но был разговор о добавлении его к стандарту. Я не встретился с современной sed реализацией, которая не имеет способности использовать ДО шаблоны так или иначе.
В некоторых случаях существуют вещи, можно сделать использование ДО шаблоны, что Вы не можете сделать использования значения по умолчанию sed шаблоны (BREs). См. комментарии к этому ответу. Но в данном случае, использование ДО шаблоны только для удобства. Как sch говорит в комментарии, можно опустить -r
(или -E
) флаг, и просто заменяет (...)
с \(...\)
и {8}
с \{8\}
. Мой исходный ответ используется +
, который является также не частью шаблонов BRE; но на самом деле это не было необходимо для решения.
С которым ОС Вы работаете? Если это - Ubuntu, проверьте эту ссылку: https://askubuntu.com/questions/2321/what-is-the-proper-way-to-change-the-dns-ip
В противном случае можно все еще смочь адаптировать шаги к системе... Я думаю, что это не столь легко как просто редактирование /etc/resolv.conf
на Вашей машине. Я думаю, что это будет перезаписано Networkmanager. Как альтернатива, Вы могли возможно отключить Networkmanager и работать со "старым" ifup
и ifdown
сценарии, но Вы могли бы использовать некоторый комфорт как автоматический выбор сети WiFi и так далее...
cat /etc/resolv.conf
сказать? Что делаетnm-tool | grep -i dns
показать? – TomS 15.10.2013, 15:05