У меня есть двоичные файлы, которые должны быть текстовыми (это экспортированные журналы), но я не могу открыть их с меньшим количеством (это выглядит некрасиво - это выглядит как двоичный файл). Я обнаружил, что могу открыть его с помощью vi и могу отследить его (вы увидите реальные журналы), но я действительно хотел бы просмотреть их (без необходимости открывать каждый с помощью vi, а затем выполнить поиск). Есть ли способ для меня это сделать?
76
grep -a
?Ответы:
В
grep
любом случае вы можете использовать поиск файла - ему все равно, является ли входной файл текстовым или нет. От "man grep":Пожалуйста, отметьте слова предостережения в конце второго абзаца. Возможно, вы захотите перенаправить результаты из grep в новый файл и проверить это с помощью vi / less.
источник
Пройдите через него
strings
, чтобы удалить весь двоичный код, оставив только текст.источник
strings
видимо не понимает utf-8 это текст.Дай
bgrep
попробовать. ( оригинальный релиз / более поздняя версия )источник
\x
не работает так, как здесьgrep -P "\x05\x00\xc0" mybinaryfile
.bgrep "fafafafa" test_27.6.2015.bin |less
но получаю test_27.6.2015.bin: 00005ee4 . Я предположил бы получить fafafafa , так как я искал это. Нет руководства в человеке. Есть идеи, почему такой вывод?grep -a
?bash: bgrep: command not found...
иNo package bgrep available
.Вы можете использовать эти три команды:
grep -a <sth> file.txt
cat -v file.txt | grep <sth>
cat file.txt | tr '[\000-\011\013-\037\177-\377]' '.' | grep <sth>
источник
Начиная с Grep 2.21, двоичные файлы обрабатываются по-разному :
Итак, что происходит сейчас, так это то, что с двоичными данными все нетекстовые байты (включая переводы строк) обрабатываются как разделители строк. Если вы хотите изменить это поведение, вы можете:
использовать
--text
. Это гарантирует, что только переводы строк являются символами конца строкииспользовать
--null-data
. Это гарантирует, что только нулевые байты являются ограничителями строкиисточник