Files

如何在 Unix 中顯示大文件的一行的十六進制值?

  • December 10, 2013

我正在將大型文本文件中的數據導入數據庫,並且在文件的第 X 行出現錯誤。如果我用較少的查看器查看該行,我不會看到任何奇怪的東西,因為很可能該行包含不可列印的字元。然後我嘗試 sed 該行並使用 hexdump 檢查它:

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

同樣,什麼也沒有,很可能是因為 sed 過濾掉了所有不可列印的字元。

有什麼評論我怎麼能看到一個十六進制大文件的特定行發生了什麼?

sed不應該是 ”

$$ filtering $$out all non-printable characters”——你不是告訴它這樣做。事實上,對一個方便的二進製文件(FreeBSD核心)的簡單測試表明情況並非如此——sed愉快地傳遞了不可列印的字元。

為你公開指責可憐的無辜者sed在沒有先給予適當測試的好處的情況下做令人髮指的錯誤而感到羞恥——我會讓你的良心產生適當的懺悔行為!

如果sed沒有給你任何輸出,那是因為沒有什麼可以給 - 要麼該行不存在(也許文件突然結束 - Didjya 檢查wc -l?也許那裡有一個EOF它不應該存在的地方並且你的程序正在中止時它看到了嗎?)。

有問題的行也可能僅包含換行符或NUL字元(sed應該盡職盡責地返回,但在 hexdump 中對您沒有多大用處)……

引用自:https://serverfault.com/questions/560381