是否有一种简单的方法可以随机混洗固定大小的字节 block ?
我有一个包含许多固定大小字节的大型二进制文件(例如,数百 GB)。我不关心随机性,但想随机播放二进制文件中的两个字节(或者可以是任何固定大小的字节,最多 8 个)元素。有没有办法结合 unix 核心工具来实现这个目标?如果没有这样的工具,我可能不得不开发一个 C 代码。我想听听人们有什么建议。
最佳答案
这是一个愚蠢的 shell 技巧。
- 首先,使用
xxd
将文件分解为两个 2 字节的 block
- 用
shuf
随机播放它 - 使用 xxd 重新组合文件。
例如。
xxd -p -c 2 input_file | shuf - | xxd -p -r - output_file
我还没有在大文件上测试过它。您可能需要使用中间文件。
或者,您可以像这样使用 sort -R
:
xxd -c 2 in_file |sort -R | cut -d' ' -f 2 | xxd -r -p - out_file
这取决于 xxd
输出偏移量,它应该对每一行进行不同的排序。
关于c - 用于在二进制文件中随机改组字节 block 的 Unix 命令行工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824909/