Это должно решить вашу проблему, хотя и не так "просто", как я надеялся:
perl -pe 's/(\w)\s*$/\1,\n/;' your_filename | perl -pe 'BEGIN{undef $/;} s/(?<!})\s*\n\s*/ /smg;' -e 's/(client )(\S+)(.*?)(\w+),\s*}/\1\4\3\2 }/g;'
Он выполняет одно регулярное выражение для добавления запятых к вашим строкам, заканчивающимся буквенно-цифровыми символами (от A до Z, от a до z, от 0 до 9 и_)
Он запускает другое регулярное выражение для замены любых символов новой строки (и окружающих их пробелов )одним пробелом, если только эта строка не заканчивается на}
(с использованием отрицательного вида -позади ), затем, наконец, регулярное выражение для окончательного форматирования (переключить имя хоста и IP и удалить лишнюю запятую)
При этом символы новой строки игнорируются, и вы можете перенаправить результат в новый файл (или в существующий файл )с добавлением > your_new_filename
в конец. Это решение может использовать флаг -i
, чтобы изменить ваш файл на месте, если вместо этого вы сделали это:
perl -i -pe 's/(\w)\s*$/\1,\n/;' your_filename
perl -i -pe 'BEGIN{undef $/;} s/(?<!})\s*\n\s*/ /smg;' -e 's/(client )(\S+)(.*?)(\w+),\s*}/\1\4\3\2 }/g;' your_filename
Вы не можете определить это напрямую из вывода apt-cache show
. Есть еще одна команда apt-cache
, которая сообщит вам, какие версии доступны в различных репозиториях, policy
; все те, которые несут версию-кандидата, являются потенциальными источниками пакета, показанного show
.
apt-cache policy cntlm
предоставит нужную вам информацию.