Вы можете использовать shuf
(вам может понадобиться sudo apt install shuf
) перетасовать строки второго файла, а затем использовать их для замены:
$ awk -F'@' 'NR==FNR{a[NR]=$1;next}{print a[FNR]"@"$2} ' file1 <(shuf file2)
moonwalker@adress3.com
hansolo@adress1.com
anakinskywalker@adress5.com
obiwankenobi@adress4.com
darthvader@adress2.com
shuf
просто рандомизирует порядок своих входных строк. Там awk
команда сначала прочитает весь NR==FNR
файл file1 ( будет истинно только во время чтения первого файла) и сохранит второе поле (поля определены @
, так что это домен) в ассоциативном массиве a
, значениями которого являются домены и чьи ключи являются номерами строк. Затем, когда мы перейдем к следующему файлу, он просто напечатает все, что было сохранено a
для этого номера строки, вместе с тем, что находится в файле 2 для того же номера строки.
Обратите внимание, что это предполагает, что оба файла имеют одинаковое количество строк и на самом деле не являются «случайными», так как не допускают повторения чего-либо. Но это похоже на то, что вы хотели попросить.