Как выбрать определенные наборы или вытеснить из файла, если 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 

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 ) в блоке

  • Как извлечь конкретное поле из строк из файла на основе соответствия последующих строк
  • Команда grep в curl
  • Grep для строки со списком файлов в качестве источника
  • Время / Дата grep в течение 15 минут
  • grep string из содержимого команды file, а затем удалить файл
  • Разделить двоичные данные фиксированного байтового смещения по байтовой позиции?
  • Греп что-то конкретное из результатов последнего исполнения?
  • sed / awk / grep найти строку между точкой с запятой
  • Grep не может найти конец строки в текстовом файле формата DOS?
  • Grep для линейных совпадений, начинающихся с X и содержащих точное слово (точное слово переносится)
  • Почему регулярное выражение с \\ $ \ {работает с egrep, но не с sed?
  • Linux и Unix - лучшая ОС в мире.