Найдите точное совпадение идентификатора, который всегда находится на одной строке ниже шаблона через grep

Я хотел бы знать код для grep для проверки двух совпадений один за другим. Например, у меня есть следующий текст из одного из файлов поиска:

 @<TRIPOS>MOLECULE ← pattern 1532 ← ID 17 17 SMALL NO_CHARGES 

Мне нужно найти точное соответствие идентификатора, который всегда находится на одной строке ниже шаблона, а затем получить имя файла, из которого был найден ID.

Я использовал следующую команду:

 grep -Pzo '@<TRIPOS>MOLECULE'(?:.*\n)*?\K1532' filename 

но я получил файлы, содержащие 1532, а также 153284. Мне нужен код для точного совпадения идентификаторов.

  • Поиск строки в каталоге. Получить вывод без имени файла.
  • Grep во многих каталогах, но смотрите только в каждом каталоге подкаталогов, но не во всех поддиректориях
  • Как извлечь строку между двумя \ n в файле
  • найти общие строки в каждом столбце в одном файле
  • diff, чтобы показать только добавления в измененном файле
  • Является ли grep частью ядра? (Если нет, то почему?)
  • Поиск строк в текстовом файле для шаблона между двумя позициями и печать всей строки
  • Как получить код статуса grep, расположенный в поиске
  • One Solution collect form web for “Найдите точное совпадение идентификатора, который всегда находится на одной строке ниже шаблона через grep”

    Ваша модель ищет 1532 но ничего не говорит о том, что происходит потом:

     $ printf '1532\n15321\n1532foo\n' | grep -o '1532' 1532 1532 1532 

    В зависимости от того, что вы хотите сделать, вы можете ограничить свой шаблон только совпадением перед новой строкой:

     grep -Pzo '@<TRIPOS>MOLECULE(?:.*\n)*?\K1532\n' filename 

    Или, если может быть пробел после номера до конца строки:

     grep -Pzo '@<TRIPOS>MOLECULE(?:.*\n)*?\K1532\s*\n' filename 

    В качестве альтернативы, если вы можете иметь другие вещи в одной строке, используйте \b чтобы убедиться, что число встречается до границы слова:

     grep -Pzo '@<TRIPOS>MOLECULE(?:.*\n)*?\K1532\b' filename 
    Interesting Posts

    Различия между системными процессами и пользовательскими процессами, путями управления ядрами и потоком ядра

    Debian 8 Gnome 3 распознает динамик Bluetooth в качестве устройства ввода

    передача файла в настройках монтирования

    Экспорт переменной командной оболочки из командной строки

    Ошибка с gedit не может сохранить файл

    Что делают дублирующие правила iptables?

    Как скопировать папку другим, но НЕ путем слияния / добавления

    Сценарий добавления Unix

    Удаление каждой строки, которая не является последовательностью из 7 чисел

    Беспроводная карта RTL8191SE не работает в Squeeze Debian

    Могу ли я доверять статусу выхода wget, даже если он был перезапущен?

    Системные динамические (runtime) зависимости

    Могу ли я печатать через CUPS на устройстве ARM без драйверов, установив CUPS на сервер x86 с драйверами?

    btrfs – недостающее пространство, что его берет?

    Есть ли способ изменить большинство привязок к чему-то более знакомому?

    Linux и Unix - лучшая ОС в мире.