Есть данные, немного структурированные: идут по разделам - начало раздела с первого символа строки, остальные строки начинаются с пробела. Несколько разделов. Похоже на вывод ifconfig во фре или lspci -v в линуксе. Данных много - порядка 100-200 кБ. Читать через less неудобно - нужна оперативность (перечитка по мере возникшей необходимости - от 10 секунд до 30 минут, не в этом дело). Подскажите, как можно выбрать только один раздел на уровне grep, sed, awk & etc? Источник может быть stdin или файл.
может вам подойдет поиск в less, вызывается нажатием /
А так я бы написал простенький perl скрипт, который один раз считывает все данные в хеш с ключами по именам разделов, далее ожидает ввода имени раздела с клавиатуры и выводит элемент хеша с этим ключом. И так до тех пор пока не будет введена пустая строка, означающая выход
>Есть данные, немного структурированные: идут по разделам - начало раздела с первого
>символа строки, остальные строки начинаются с пробела. Несколько разделов. Похоже на
>вывод ifconfig во фре или lspci -v в линуксе. Данных
>много - порядка 100-200 кБ. Читать через less неудобно - нужна
>оперативность (перечитка по мере возникшей необходимости - от 10 секунд до
>30 минут, не в этом дело). Подскажите, как можно выбрать только
>один раздел на уровне grep, sed, awk & etc? Источник может
>быть stdin или файл.по сути вопроса:
ifconfig | awk 'BEGIN {a=0}; {if(/^rl0:/ && a==0) {print;a=1} else {if(/^[[:space:]]+/ && a==1){print}else{a=0}}}'по теме: юзай perl - в разы удобней, быстрее, гибче, весьма портабелен, есть почти на всех никсах, куча модулей в комплекте, туева хуча модулей в инете.
или так
ifconfig | awk 'BEGIN {a=0};/^xl0/{print;a=1};/^[[:space:]]+/ && a==1 {print};\!/^xl0/ && \!/^[[:space:]]+/{a=0};'