сообщение об ошибке «grep: слишком длинная строка» - PullRequest
8 голосов
/ 07 сентября 2010

Я использовал следующий синтаксис, чтобы найти IP-адрес в /etc

(ответ Денниса Уильямсона на сайте суперпользователя)

, но я получаю сообщение "grep: слишком длинная строка".

Кто-то знает, как игнорировать это сообщение и почему я его получаю?

  grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/
  grep: line too long

Ответы [ 3 ]

22 голосов
/ 25 июля 2011

Решение find / xargs у меня не сработало, но привело к той же ошибке.

Я решил эту проблему с помощью опции -I grep (игнорировать двоичные файлы).В моем случае в списке файлов для поиска должен быть двоичный файл без разрывов строки, поэтому grep пытается прочитать гигантскую строку, которая слишком велика.Это мое предположение о том, что означает эта ошибка.

Я получил идею от: http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4

Конечно, это может не сработать, если есть текстовый файл со слишком длинной строкой.

5 голосов
/ 07 сентября 2010

Используйте find для создания списка файлов в grep,

find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'

В общем, find - это более гибкий способ обхода файловой системы и создания списков файлов для других программ.

1 голос
/ 07 сентября 2010

Возможно, ваш grep содержит ошибку и случайно сканирует двоичный файл со слишком длинными строками (т. Е. Слишком много символов, чтобы grep мог обрабатывать между двумя символами новой строки).См. эту страницу с красной шапкой для более подробной информации ( страница ошибки ).

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