У меня есть следующий вывод команды linux brctl show. Я хотел бы извлечь все связанные интерфейсы (как указано в столбце интерфейса) и сохранить их в некотором массиве. Может ли кто-нибудь предложить способ добиться этого?Как извлечь строки под столбцом с помощью сценария оболочки
[email protected]:~# brctl show
bridge name bridge id STP enabled interfaces
br-lan 7fff.00c0ca7e0288 no eth0
wlan1_1
wlan1_1.sta1
По какой-то причине у меня нет точного форматирования. Но выход brctl-шоу выглядит так же, как и выше, за исключением нескольких интервалов.
Поэтому я хотел бы хранить eth0, wlan1_1, w; an1_1.sta1 в некотором массиве, если это возможно.
Благодаря
Это дает мне кое-что для начала. Хотя чтение второй строки все еще проблематично, а также есть разница в количестве символов в строках 2, 3 и 4. Например [brctl show | хвост -n +3 | cut -c 8-] отлично работает для строк 3 и 4. Но не для строки 2. Спасибо за ваш ответ. – user27396
Это странно. Я использовал «brctl show» здесь (не имел интерфейсов), поэтому мне пришлось отбросить 1-ю строку. Там было '36'' интерфейсов' из-за символов 'tab', разделяющих заголовки. Затем я скопировал ваш вывод в текстовый файл и протестировал его. Затем колонка, которую вы хотели, начиналась с '46' из-за пробелов, предшествующих всем интерфейсам. Если 'brctl' делает что-то странное, как« смешивание вкладок и пробелов »на выходе, вам просто нужно будет сыграть с ним. Альтернативой является цикл while while -r line с проверками на линии, чтобы определить, есть ли текст в символах '1-> x', чтобы сделать что-то одно, а другое сделать другое. –
Попробуйте решение 'bash script', которое я разместил. Как уже отмечалось, я тестировал ваши данные в текстовом файле, но команда 'brctl show' должна работать одинаково из-за использованных тестов. –