Чтение раздела файла

Расширение OneTab делает именно это. Он также доступен для Chromium/Chrome.

0
01.12.2021, 12:45
2 ответа

Обязательное awkрешение:

awk -v sect="4242" '$0~/^[[:digit:]]/ {if ($1==sect) {p=1;next} else p=0} p' input.txt
  • Секция указывается как awkпеременная sectс помощью оператора -v.
  • Если найдена строка, которая сразу начинается с цифры, она принимается за начало раздела. Если номер раздела соответствует желаемому разделу, мы устанавливаем флагp(для «печати» )на 1, но пропускаем обработку до следующей строки (, поэтому мы не печатаем начало раздела ).. Если номер секции не совпадает, мы устанавливаем флаг 0.
  • Текущая строка печатается, только если pравно 1.

Если вы хотите убрать начальные пробелы из вывода, измените программу следующим образом:

awk -v... '$0~/^[[:digit:]]/ {if ($1==sect) {p=1;next} else p=0}
            p{sub(/^[[:space:]]+/,""); print}' input.txt
2
01.12.2021, 14:06

Я предлагаю это решение, предполагая, что в содержимом файла нет @:

$ sed -e 's/^\([0-9]\)/@\1/' -n -e '/@4317/,/@/p' file | sed -e '/^@/d' -e 's/^[[:blank:]]*//'
0700  U.S. Robotics USR5426 802.11g Adapter
0701  U.S. Robotics USR5425 Wireless MAXg Adapter
0711  Belkin F5D7051 v3000 802.11g
0720  Dynex DX-BUSB
0721  Dynex DX-EBUSB


  • 's/^\([0-9]\)/@\1/'заменяет начальный номер строки на @.
  • '/@4317/,/@/p'выбирает содержимое между двумя @по номеру идентификатора.
  • sed -e '/^@/d' -e 's/^[[:blank:]]*//'удаляет строки, начинающиеся с @, и начальные пробелы.
0
01.12.2021, 15:25

Теги

Похожие вопросы