生成 2 个 500MB 的随机文件,其中包含一些常用行

生成 2 个 500MB 的随机文件,其中包含一些常用行

(你好!)

我需要生成 2 个文件(每个文件必须为 500 MB)。并且这两个文件应该有一些共同的行(但不一定位于文件中的同一位置)

我正在考虑类似的事情:cat /dev/urandom | tr -dc 'a-f0-9' | fold -w 32 | head -n 30000000 > random.csv但这并不是我想要做的......

你能给我建议吗?

答案1

以下是我根据评论以较小示例提出的建议:

    # generate the 2 basic files of 30 lines each
cat /dev/urandom | tr -dc 'a-f0-9' | fold -w 32 | head -n 30 > random1.csv
cat /dev/urandom | tr -dc 'a-f0-9' | fold -w 32 | head -n 30 > random2.csv
    # generate 3 common lines
cat /dev/urandom | tr -dc 'a-f0-9' | fold -w 32 | head -n 3 > common.csv
    # mix the common lines into the 2 files
cat random1.csv common.csv | shuf > random11.csv
cat random2.csv common.csv | shuf > random22.csv

验证:

$ cat common.csv
8b1df61042e621bb3cd3ba43942b5ada
71b2368e90c6eb038e84ef29446c0dec
56697847ec43cc181a556625ec880d85
    # select one common line and look for it in the 2 files
$ grep -n 71b2368e90c6eb038e84ef29446c0dec random11.csv random22.csv
random11.csv:13:71b2368e90c6eb038e84ef29446c0dec
random22.csv:9:71b2368e90c6eb038e84ef29446c0dec

因此,其中一条公共行是第一个文件中的第 13 行和第二个文件中的第 9 行。

但是如果您使用 30M 线路而不是 30M 线路,请注意所需的资源!

相关内容