Каков наилучший способ получить только окончательное совпадение регулярного выражения в файле с использованием grep?
Кроме того, возможно ли начать поиск с конца файла вместо начала и остановить, когда он найдет первое совпадение?
Вы могли бы попробовать
grep pattern file | tail -1
или же
tac file | grep pattern | head -1
или же
tac file | grep -m1 pattern
tac file | grep -m 1 pattern
grep -n
) в реальном файле, я думаю, что вtac
значительной степени нужно было избегать, если только я не хотел делать некоторое вычитание сwc -l
. В противном случаеtac
сgrep -m1
делает много смысла.grep
что перестанет работать после первого матча. без-m 1
,grep
сначала найдет все подходящие шаблоны в файле , затемhead
покажет только первый - гораздо менее эффективный. Денис, рассмотрите возможность размещения этого в отдельном ответе!Для тех, кто работает с огромными текстовыми файлами в Unix / Linux / Mac / Cygwin. Если вы используете Windows, проверьте это об инструментах Linux в Windows: https://stackoverflow.com/questions/3519738/what-is-the-best-way-to-use-linux-utilities-under-windows .
Можно следовать этому рабочему процессу, чтобы иметь хорошую производительность:
zq
из пакета.Цитата из его github readme:
Создание индекса
Запрос индекса
источник
Я всегда использую cat (но это делает его немного длиннее):
cat file | grep pattern | tail -1
Я бы обвинил моего преподавателя курса администратора Linux в колледже, который любит кошек :))))
- Вам не нужно сначала следить за файлом, прежде чем искать его.
grep pattern file | tail -1
и более эффективен тоже.источник
cat
файл и канал к немуgrep
. Вы можетеgrep
искать файл напрямую черезgrep pattern file
(и затем использоватьtail
для возврата последнего результата), как в ответе Cakemox.