我正在尝试清理一个二进制文件,以删除其上的所有NULL。这个任务很简单,但是我发现很多文件的末尾都有一个NULL,我不知道是什么。我正在转储每个字节的十六进制值,我在任何地方都看不到null,但是如果我对文件执行hexdump,我会在最后看到一个值00,我不知道为什么……可能它是一个EOF,但它很奇怪,因为它并不是出现在所有的文件中。这是我的脚本,非常简单,它生成100个随机的二进制文件,然后读取每个文件的文件,每个char的char。根据bash不会在变量上存储NULL的前提,在将其存储在变量上之后重写char可以避免NULL,但没有...
#!/bin/bash
for i in $(seq 0 100)
do
echo "$i %"
time dd if=/dev/urandom of=$i bs=1 count=1000
while read -r -n 1 c;
do
echo -n "$c" >> temp
done < $i
mv temp $i
done我还尝试了:
tr '\000' <inFile > outfile
但是同样的结果。
下面是其中一个存在此问题的文件的hexdump
00003c0 0b12 a42b cb50 2a90 1fd6 a4f9 89b4 ddb6
00003d0 3fa3 eb7e 00c4c4应该是最后一个字节,但正如您所看到的,那里有一个00 ...
有什么线索吗?
编辑:忘了提一下,我运行这个程序的机器类似于raspberry pi,它提供的工具非常有限。
https://stackoverflow.com/questions/44519276
复制相似问题