Как показать шестнадцатеричные значения строки большого файла в Unix?

Я импортирую данные из большого текстового файла в базу данных и получаю сообщение об ошибке в строке X файла. Если я смотрю на строку с меньшим количеством зрителей, я не вижу ничего странного, потому что, скорее всего, строка содержит непечатаемые символы. Затем я попытался уложить строку и проверить ее с помощью hexdump:

sed -n 2540283p 30gb_large_file.fzp | hexdump -C

опять же, ничего, скорее всего, потому что sed отфильтровал все непечатаемые символы.

Любые комментарии, как я мог видеть, что происходит в конкретной строке большого файла в шестнадцатеричном формате?

1 ответ

Решение

sed не должно быть "[отфильтровывать] все непечатаемые символы" - вы этого не говорите. На самом деле простой тест на удобном двоичном файле (ядре FreeBSD) показывает, что это не так - sed с радостью передает непечатные символы.

Позор вам за публичное обвинение бедных невинных sed делать что-то чудовищно неправильное, не пройдя сначала надлежащего теста - я оставлю это вашей совести, чтобы придумать соответствующий акт раскаяния!

Если sed не дает вам никакого вывода, это потому что нечего дать - либо эта строка не существует (возможно, файл заканчивается внезапно - Didjya проверить с wc -l? Может быть, есть EOF где-то там не должно быть, и ваша программа прерывается, когда видит это?).
Также возможно, что рассматриваемая строка состоит только из новой строки или NUL характер (который sed должен покорно вернуться, но который не будет вам полезен в hexdump)...

Другие вопросы по тегам