Я импортирую данные из большого текстового файла в базу данных и получаю сообщение об ошибке в строке X файла. Если я смотрю на строку с меньшим количеством зрителей, я не вижу ничего странного, потому что, скорее всего, в строке есть непечатаемые символы. Затем я попытался выполнить команду sed и проверить ее с помощью шестнадцатеричного дампа:
sed -n 2540283p 30gb_large_file.fzp | hexdump -C
опять же, ничего, скорее всего, потому что sed отфильтровал все непечатаемые символы.
Есть комментарии, как я мог увидеть, что происходит в конкретной строке большого файла в шестнадцатеричном формате?
sed
не должно быть «[фильтрация] всех непечатаемых символов» - вы не говорите ему об этом. Фактически, простой тест на удобном двоичном файле (ядро FreeBSD) демонстрирует, что это не так - sed
с радостью передает непечатаемые символы.
Позор вам за публичное обвинение бедных невиновных
sed
сделать что-то отвратительно неправильное, не проверив сначала - я оставлю вашей совести придумать соответствующий акт раскаяния!
Если sed
не дает вам никакого вывода, потому что нечего дать - либо эта строка не существует (возможно, файл заканчивается внезапно - Диджья проверяет с помощью wc -l
? Может быть, есть EOF
где-то там этого быть не должно, и ваша программа прерывается, когда видит это?).
Также возможно, что рассматриваемая строка состоит только из новой строки или NUL
персонаж (который sed
должен послушно вернуться, но в шестнадцатеричном дампе это не принесет вам особой пользы) ...