grep – это утилита Linux, используемая для поиска совпадений в содержимом.
По умолчанию она выводит все совпадающие строки, что может формировать большое количество вывода.
Если вас интересует только первое совпадение, вы можете ограничить вывод только первой строкой.
Ограничение вывода с помощью grep -m
Команда grep имеет параметр -m или –max-count, который может решить эту проблему, но он может сработать не так, как вы ожидаете.
Этот параметр заставит grep прекратить поиск после нахождения N совпадающих строк, что отлично работает, поскольку ограничивает вывод одной строкой, всегда содержащей первое совпадение.
Мы можем проверить это с помощью флага -n, чтобы вывести номера строк.
grep -m 1 "foo" file
Однако это имеет некоторые недостатки, о которых вы должны знать.
Он останавливается не после N совпадений, а после N строк.
Это приведет к тому, что grep будет искать совпадения несколько раз в каждой строке, что может стать проблемой при использовании флага -o, который выводит каждое совпадение на новой строке.
Кроме того, на один файл приходится только N строк, поэтому при использовании для нескольких файлов будет выведена первая совпадающая строка для каждого файла.
Использование head для ограничения вывода grep
Альтернативой является передача вывода в другую команду, head, которая просто отсекает ввод после N строк.
Тем не менее, использовать -m 1 с grep все же полезно, так как он прекратит обработку больших файлов, если совпадение будет найдено раньше.
grep "foo" file_one.txt | head -1
Это работает с флагом -o для печати только первого совпадения, даже если в файле есть несколько совпадений:
Однако будьте осторожны при использовании этой функции с несколькими файлами.
При использовании head будет выведена первая совпавшая строка в любом файле.
Это может стать проблемой, так как grep показывает вывод в порядке обработки файлов, а вы можете не знать, в каком порядке будут обрабатываться файлы, если не отсортируете их вручную перед передачей в grep.
Аналогично, вы также можете использовать tail для вывода последней совпадающей строки.
см. также:
- 🐧 Как выполнить поиск Grep по всем файлам и во всех каталогах
- 🧾 Как скачать, установить и использовать GNU Grep в Windows?
- ngrep – Сетевой анализатор пакетов для Linux
- 📦 Как найти версию пакета в системах Linux
- 🔎 Аудит исходного кода с помощью GREP
- 🐧 Основные примеры использования команды Grep в системах Linux
- 🐧 Как вывести только целые слова при поиске файла с помощью grep в системах Linux