(你好!)
我需要生成 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 线路,请注意所需的资源!