grep Top n соответствует всем файлам - PullRequest
7 голосов
/ 25 января 2012

Я использую grep для извлечения строк в наборе файлов:

grep somestring *.log

Можно ли ограничить максимальное количество совпадений на файл? В идеале я бы просто распечатал n строк из каждого файла * .log.

Ответы [ 2 ]

10 голосов
/ 25 января 2012

Чтобы ограничить 11 строк на файл:

grep -m11 somestring *.log
2 голосов
/ 25 января 2012

Вот альтернативный способ симуляции с помощью awk:

awk 'f==10{f=0; nextfile; exit} /regex/{++f; print FILENAME":"$0}' *.log

Пояснение:

  • f==10 : f - это флаг, который мы устанавливаем и проверяем, равно ли его значение 10. Вы можете настроить его в зависимости от количества строк Вы хотите соответствовать.

  • nextfile : Перемещает обработку к следующему файлу.

  • exit : Вырывается из awk.

  • /regex/ : Вы ищете regex или pattern.

  • {++f;print FILENAME":"$0} : Мы увеличиваем флаг и печатаем имя файла и строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...