Поиск строк в файлах и представление четырех строк контекста (совпадение и три следующих)

У меня есть строка (или список строк), которая / должна быть найдена во всех файлах каталога. Например, если я ищу ABC, а file1.txt содержит ABC в строке 6, то мне нужны строки 6, 7, 8 и 9 из этого файла. Я хочу, чтобы весь такой вывод переходил к новому выходному файлу.

  • Манипулирование файлами; Вставляйте «;» каждый 12, 44 и 60-й символы в каждую строку текстового файла
  • Как написать данные отдельно во многих текстовых файлах, содержащих одни и те же поля?
  • Как удалить повторяющиеся символы?
  • sed удалять пространство
  • Удалить определенные номера строк (переданные как переменные) из файла в linux
  • Печать уникальных строк
  • Как вы извлекаете целое слово, содержащее подстроку?
  • Показать символ в позиции в файле
  • 3 Solutions collect form web for “Поиск строк в файлах и представление четырех строк контекста (совпадение и три следующих)”

    Возможно, это подходит. Использует параметр grep -A (после контекста) для вывода соответствующей строки и трех последующих строк.

     find . -name file\* -exec grep -A 3 ABC {} \; > result-filename 

    ПРИМЕЧАНИЕ. Вы не должны result-filename directoryname . (См .: grep: входной файл «X» также является выходным ).

    Чтобы охватить несколько шаблонов:

     find . -name file\* -exec egrep -A 3 'ABC|XYZ' {} \; > result-filename 

    Или несколько шаблонов из файла (спасибо Евгению Верещагину):

     find . -name file\* -exec grep -A 3 -f patterns.txt {} \; > result-filename 

    Следующее выполнит поиск всех неточечных файлов в текущем каталоге:

     sed '/string/{ $!N;$!N;$!N;$!N w ./new_out_file }' ./* 

    Чтобы выполнить несколько совпадений с фреймами с grep -A без find и без имен файлов, добавленных к каждому совпадению, вам просто нужен только один поток.

     cat ./* | grep -A2 -Ff pattern_file >outfile 

    Я получил решение для этого:

     grep -A 2 -f 'INPUT.txt' *.* >> RESULT.txt 
    Linux и Unix - лучшая ОС в мире.