По умолчанию NetworkManager использует Dnsmasq в качестве сопоставителя DNS, если он установлен. То, которое является значением по умолчанию на Debian, основывало системы, таким образом, выполнения Dnsmasq в конфигурации по умолчанию, где это только разрешает имена на основе вышестоящих серверов, указанных параметрами командной строки (плюс содержание /etc/hosts
). Вы имеете нет /etc/dnsmasq.conf
потому что тот файл только присутствует в дополнительном пакете dnsmasq.
Видеть, использует ли Ваша система в настоящее время Dnsmasq или Unbound для запросов DNS, выполненных netstat -ulnp | grep ":53 "
.
В Ubuntu 12.04 NetworkManager не играет хорошо с другими сопоставителями DNS (см. ошибку 959037 — сводка Thomas Hood в значительной степени касается всего этого). Для продолжания бежать Несвязанный вместе с NetworkManager лучший выбор состоит в том, чтобы сказать NetworkManager не выполнять Dnsmasq (Вам не нужен он в дополнение к Несвязанному, не, если Вы не используете функции Dnsmasq, который NetworkManager не использует). Сделать это:
/etc/NetworkManager/NetworkManager.conf
прокомментировать строку, содержащую dns=dnsmasq
(добавьте a #
в начале той строки).service network-manager restart
.Вам нужны числовые кванторы для этого:
sed -r 's/\b([0-9]{3})([0-9]{3})([0-9]{4})\b/\1-\2-\3/' your_file
-r
переключателем, который включает расширенные регулярные выражения, не является POSIX, хотя, таким образом, более портативное решение было бы
perl -pe 's/\b([0-9]{3})([0-9]{3})([0-9]{4})\b/$1-$2-$3/' your_file
В расширенных регулярных выражениях, кванторе {n,m}
средства соответствуют предыдущему атому, по крайней мере, n
времена и самое большее m
времена. Например, квантор ?
может быть выражен как {0,1}
. Исключение m
средства никакой верхний предел: +
может быть записан как {1,}
. Наконец, {n}
средства соответствуют предыдущему атому точно n
времена.
Если Вы хотите использовать sed
, у Вас не должно точно быть расширенных регулярных выражений для этого; это просто, что основная форма регулярных выражений была бы менее читаема:
sed 's/\b\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]\{4\}\)\b/\1-\2-\3/' your_file
Я использовал бы жемчуг для этого вместо этого:
$ perl -pe 's/\b(\d{3})(\d{3})(\d{4})\b/$1-$2-$3/' foo.txt
atewfnwieug 820-491-9561
adw 891-561-7141
Можно также сделать это на месте, sed
- как:
$ perl -i.bak -pe 's/\b(\d{3})(\d{3})(\d{4})/$1-$2-$3\b/' foo.txt
Если Ваши номера телефона могут быть смежны с буквами как это:
abcd1234567890abc
abcd1234567890
1234567890abc
можно использовать этого вместо этого:
$ perl -pe 's/([^\d]*)(\d{3})(\d{3})(\d{4})([^\d]*)/$1$2-$3-$4$5/' foo.txt
abcd123-456-7890abc
abcd123-456-7890
123-456-7890abc
Весь этот выбор предполагает, что номера телефона являются всегда 10 цифрами долго как в Вашем примере.