Не могу найти диск C при загрузке в реальном времени [закрыто]

0
22.03.2016, 19:04
2 ответа

Это должно сработать. Добавьте имя вашего файла после этой команды:

sed -n '
       /URL:/{
              :addanotherrow
              N
              /-\{50,\}/bmatchandprint
              baddanotherrow
              :matchandprint
              /Name(s):[^\n]*\n[^-\n]*\n[^-]/p
              }
       '

Некоторые пояснения:

  • параметр sed "-n" предотвращает автоматическую печать пробелов в шаблонах - совпавшие шаблоны печатаются с буквой "p" в конце последнего ряда внутри скобок {}
  • метки помечены ведущим ":", поэтому ":addanotherrow" и ":matchandprint" являются точками перехода для операторов "b"
  • b после метки - это команда перехода к этой метке (что-то вроде GOTO)
  • N добавляет следующую строку ввода в пространство шаблона
  • строки, начинающиеся с "/", просто проверяют пространство шаблона на соответствие регулярному выражению, когда оно подходит, выполняется следующая команда, как уже упоминалось, b разветвляет, а p печатает пространство шаблона

Другими словами: ищется строка "URL:", с этого момента включаются дополнительные строки, пока не будет найдена строка (не менее 50 дефисов в строке). После этого просматриваются собранные строки ("пространство шаблона"). Только если найдено "Имя(имена):" с более чем одной строкой (не начинающейся с дефиса), пространство шаблона будет выведено.

Надеюсь, это поможет :-)

1
28.01.2020, 02:48
sed -n '
       /URL:/{
              :1                          #return point
              N                           #append next line
              /-{20,}/!b1                 #go to return point while reach ---
              /Name(s):\n[^\n]\+\n[^-]/p  #check if more 1 line after «Name(s)»  
              }
       '
0
28.01.2020, 02:48

Теги

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