У меня есть список из 3000 или около того IP-адресов, которые были результатом вывода pdsh через dshback -c
, который форматирует вывод в читаемом формате. Мне нравится читаемость dshback -c
, но проблема заключается в том, что IP-адреса с общими октетами сворачиваются для экономии места. Мне нужно иметь полный IP-адрес для остальной части моего проекта.Использование BASH, как я могу расширить список IP-адресов PDSH?
Есть простой способ преобразовать этот вход:
192.168.38.[217,222],192.168.40.215,192.168.41.[219-222]
к этому выходу:
192.168.38.217,192.168.38.222,192.168.40.215,192.168.41.219,192.168.41.220,192.168.41.221,192.168.41.222
Я думал СЭД может быть использована непосредственно, но я не уверен, как хранить общие октеты в переменной. По этой причине, я считаю, что сценарий bash должен использоваться вместе с sed. Любая помощь или точки в правильном направлении были бы оценены.
Оба эти работы отлично. Благодарю. Я думаю, что я понимаю части sed и grep, но я не уверен в команде tr. Можете ли вы объяснить, почему он расширяет базы на фигурные скобки и 2 периода? Мне кажется, что он заменит пространство запятой.Я все еще не понимаю, прочитав страницу руководства. – user2659240
Нам нужно 'tr' здесь, как после' echo' или 'eval echo', все IP-адреса разделены пробелами, и вам нужен список, разделенный запятыми. поэтому 'tr' просто заменяет пространство запятой. что касается расширения брекета, это стандартная функция bash. Вы можете прочитать об этом: https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html – rush