我正在将大型文本文件中的数据导入数据库,并且在文件的第 X 行出现错误。如果我用较少的查看器查看该行,我不会看到任何奇怪的东西,因为很可能该行包含不可打印的字符。然后我尝试 sed 该行并使用 hexdump 检查它:
sed -n 2540283p 30gb_large_file.fzp | hexdump -C
同样,什么也没有,很可能是因为 sed 过滤掉了所有不可打印的字符。
有什么评论我怎么能看到一个十六进制大文件的特定行发生了什么?
我正在将大型文本文件中的数据导入数据库,并且在文件的第 X 行出现错误。如果我用较少的查看器查看该行,我不会看到任何奇怪的东西,因为很可能该行包含不可打印的字符。然后我尝试 sed 该行并使用 hexdump 检查它:
sed -n 2540283p 30gb_large_file.fzp | hexdump -C
同样,什么也没有,很可能是因为 sed 过滤掉了所有不可打印的字符。
有什么评论我怎么能看到一个十六进制大文件的特定行发生了什么?
sed
不应该是“[过滤]所有不可打印的字符” - 你没有告诉它这样做。事实上,对一个方便的二进制文件(FreeBSD 内核)进行的简单测试表明情况并非如此 -sed
愉快地传递了不可打印的字符。如果
sed
没有给你任何输出,那是因为没有什么可以给 - 要么该行不存在(也许文件突然结束 - Didjya 检查wc -l
?也许那里有一个EOF
它不应该存在的地方并且你的程序正在中止时它看到了吗?)。有问题的行也可能仅包含换行符或
NUL
字符(sed
应该尽职尽责地返回,但在 hexdump 中对您没有多大用处)......