Как выбрать определенные наборы или вытеснить из файла, если struture содержит определенную строку?

Я хочу извлечь наборы с определенной строкой, например:

Файл abc.txt содержит

 abc 123 abcd 1234 abcde 12345 abc 123 abcd 123 abcde 12345 abc 123 abcd 1234 abcde 12345 

Теперь из приведенных выше наборов можно заметить, что во 2-м наборе 2-я строка не имеет 1234 . Так что я хочу извлечь из этих наборов, которые имеют такие строки.

 abc 123 abcd 123 abcde 12345 

  • Основная справка grep / awk - извлечение всех строк, содержащих список терминов из одного файла в отдельный файл
  • Как grep слово после / summary / в переменной и хранить слово в новой переменной в сценарии bash
  • Как добавить фильтр в свой grep-скрипт, чтобы НЕ включать строку?
  • Извлечение символов из последовательного порта
  • Почему grep показывает разные результаты, когда я использую file1 как шаблон в файле2 и наоборот?
  • grep: gcov-tool.1.gz: Нет такого файла или каталога
  • Поиск строки, с успехом Поиск ближайшего шаблона
  • df -k + как совместить строку корневого тома
  • 2 Solutions collect form web for “Как выбрать определенные наборы или вытеснить из файла, если struture содержит определенную строку?”

     > awk -v RS=$'\n\n' -v FS=$'\n' -v ORS=$'\n\n' '$2 ~ /123$/ {print}' abc.txt abc 123 abcd 123 abcde 12345 

    Это стандартная процедура для GNU sed

     sed '/abc 123/{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt 

    Или

     sed '/^$/!{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt 

    если вы ориентированы на пустую строку, а не на 1 ( abc 123 ) в блоке

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