Я использую Centos 5 Linux и использую GNU grep v2.5.1 и смотрю файл журнала объемом 36 ГБ. Он огромен, и мне нужно найти около миллиона строк, начиная с появления строки 6307459
в файле журнала, и просмотреть ее в emacs. Я использую grep
чтобы найти номер строки вхождения, а затем использую head
и tail
чтобы получить раздел, который я заинтересован в рассмотрении. Проблема, с которой я сталкиваюсь, заключается в том, что grep
находит строку, но не дает ее мне, вместо этого выводит сообщение о том, что это двоичный файл:
> grep -n 6307459 /disk2/user/test/logs/2015-03-31-23-42-52-7224.log
Binary file /disk2/user/test/logs/2015-03-31-23-42-52-7224.log matches
Я предполагаю, что где-то в файле журнала есть некоторые управляющие символы, которые обманывают grep, но начало и конец файла выглядят как обычный текст.
Я попытался переименовать его в /disk2/user/test/logs/2015-03-31-23-42-52-7224.log.txt, но он по-прежнему говорит, что это двоичный файл.
Как я могу получить номер строки вхождения шаблона 6307459 в файле, чтобы я мог использовать head
и tail
чтобы увидеть 20 строк до шаблона и 1 000 000 после шаблона?