2013-10-15 4 views
2

Я пытаюсь создать grep строку из файла, но grep ничего не возвращает (даже если строка присутствует в файле). Оказалось, что файл начинается с отметки ÿþ. Если я удалю его вручную, тогда будет работать grep. Как заставить grep работать без ручного удаления спецификации?grep не работает с спецификацией

+3

Опубликовать пример файла и 'grep' команды, пожалуйста. – fedorqui

+0

Наличие спецификации звучит как ошибка; Я не уверен, почему его удаление * не является решением. – chepner

+0

@anubhava - Этот вопросник спрашивал, как найти файлы с спецификацией, а не как найти текст в таких файлах. – Benj

ответ

1

насчет:

strings <file> | grep <pattern> 

Альтернативно смотрите страницы вашей команды grep. Что на самом деле происходит, так это то, что grep просматривает первые несколько байтов вашего файла и решает, что это двоичный файл и, следовательно, не доступен для поиска. Вы можете изменить это с помощью:

--binary-files=text 
+0

Предостережение: файлы могут быть закодированы в UTF-16 (- полученных от системы Windows?). Тогда grep (и другие методы) потерпит неудачу в многосимвольных шаблонах ascii, даже если спецификация будет удалена. – rhoerbe

1

Вы также можете использовать кошку с (видимой) опцией -v:

cat -v file | grep pattern 
Смежные вопросы