(Привет!)
Мне нужно сгенерировать 2 файла (каждый файл должен быть 500 МБ). И эти 2 файла должны иметь некоторые общие строки (но не обязательно в том же месте в файле)
Я думал о чем-то таком: cat /dev/urandom | tr -dc 'a-f0-9' | fold -w 32 | head -n 30000000 > random.csv
, но это не совсем то, что я хочу сделать ...
Можете ли вы предложить мне что-нибудь?
Вот мое предложение из комментария в форме меньшего примера:
# 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 во втором файле.
Но остерегайтесь необходимых ресурсов, если вы берете 30 миллионов строк вместо 30!