Взять последний grep в списке файлов

У меня есть список файлов, в которых у меня нет N строк, следующих за something_cool, в списке файлов. Поэтому я использую grep -Hn -A N 'something_cool' *cool_file_discriminator*.cool_file_ending, но это дает мне список вроде:

  • file1something_cool на линии k
  • линия 1
  • line2

.

.

.

  • белье

  • file1something_cool на линии g

  • линия 1
  • line2

.

.

.

  • белье

  • file2something_cool на линии k

  • линия 1
  • line2

.

.

.

  • белье

Я хотел бы, чтобы отображалось только последнее совпадение (хвост, насколько я могу судить, не работает, так как он принимает только 'fileK', а не все предыдущие файлы).

заранее спасибо

Изменить (ожидаемый результат)

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

  • file1something_cool на линии g
  • линия 1
  • line2

.

.

.

  • белье

  • file2something_cool на линии g

  • линия 1
  • line2

.

.

.

  • белье

Также укажите свой ожидаемый результат в вопросе.

Abhijit Pritam Dutta 11.04.2018 13:37

@AbhijitPritam сделал это ;-)

Thorbjørn E. K. Christensen 11.04.2018 13:50

Большое спасибо, опция -m 1 была именно тем, что мне было нужно @cmbuckley

Thorbjørn E. K. Christensen 11.04.2018 14:23
1
4
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я изменил в соответствии с комментарием EdMorton (без цикла по ls, переменная в кавычках). Если я правильно понял вопрос, это выполняет свою работу, но извините за плохое форматирование моей предыдущей команды bash ...

Вы можете сделать свой grep для каждого файла отдельно, а tail - для последних N + 1 строк результата. Интегрирован в цикл for:

for file in <your_forlder> ; do grep -Hn -A N 'something_cool' "$file" | tail -n N+1 ; done ;

В качестве комментария: grep -m 1 остановится после первого совпадения и не будет печатать последнее. Зависит от того, что вам нужно ...

Я думаю, что вы правы в комментарии, но, насколько я могу судить, он дает мне тот же результат, что и ваша команда, что для меня не имеет смысла.

Thorbjørn E. K. Christensen 11.04.2018 14:30

Он содержит несколько ошибок и антишаблонов (например, анализ вывода ls, зацикливание вывода команды, бесполезный вызов команды, переменные без кавычек и т. Д.). Я не могу понять вопрос OP из-за плохого форматирования, но что бы она ни пыталась сделать, это не способ сделать это.

Ed Morton 12.04.2018 01:45

@EdMorton Я пытаюсь найти файл снизу вверх и взять N строк (сверху вниз) после совпадения. Включая в вывод только первое совпадение. К тому же я совсем не девушка.

Thorbjørn E. K. Christensen 15.05.2018 09:57

Хорошо, опубликуйте новый, хорошо отформатированный вопрос, если вам нужна помощь в этом, и не спешите принимать первый ответ, который получите в следующий раз.

Ed Morton 15.05.2018 15:47

Другие вопросы по теме