Как показать шестнадцатеричные значения строки большого файла в 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)...