Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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