Вот еще два варианта:
grepgrep -oP '\d+|.*' file
Объяснение: -P: активирует регулярные выражения Perl Compatible Regular, которые позволяют нам использовать \d для цифр. Символ |, логический OR, означает, что grep сначала попытается сопоставить одну или несколько (+) цифр, а затем все остальное (.*). -o: Это приводит к тому, что grep печатает только соответствующую часть входной строки. Побочным эффектом является то, что если строка имеет несколько совпадений, она будет печатать каждую из них на новой строке, чтобы она выдавала желаемый результат. Perl perl -lne 's/(\d+)(\D+)/$1\n$2/; print;' file
Объяснение: -n означает, читайте файл по строкам и применяйте сценарий, заданный -e для каждой строки. -l i) удаляет новые строки (\n) с конца строки и ii) добавляет \n к каждому print. s/pattern/replacement/: заменяет pattern на replacement. (\d+)(\D+): сопоставить одну или несколько цифр (\d), за которой следует одна или несколько цифр (\D). Скобки () означают совпадение совпадений, поэтому мы можем ссылаться на них как $1 и $2. Взятые вместе, подстановка просто вставляет новую строку между строкой цифр и следующими не цифрами. [F28] просто печатает строку. Альтернативное решение, которое автоматически редактирует /etc/nsswitch.conf, удаляет [правка и переустановка] libnss-resolve:
sudo apt purge libnss-resolve
sudo apt install libnss-resolve
У меня была эта проблема со свежей установкой Ubuntu 17.04. Я решил перейти от использования systemd-resol к dnsmasq на моем ноутбуке (сервер имен также использует dnsmasq). Я выполнил следующие шаги: Как отключить systemd-разрешен и разрешить DNS с помощью dnsmasq?