Здесь я пытался найти краткий способ убедиться, что каждое совпадение происходит из другого файла.Если в файлах нет дубликатов, это довольно просто в perl:
perl -lnwE '$a{$_}++; END { for (keys %a) { print if $a{$_} == 3 } }' files*
Опция -l
автоматически скомпонует ваш ввод (удалит новую строку) и добавит новую строку в печать.Это важно в случае отсутствия eof новых строк.
Опция -n
будет читать входные данные из аргументов имени файла (или stdin).
Назначение хэша будет считать дубликаты, а блок ENDраспечатает, какие дубликаты появились 3 раза.Измените 3 на любое количество имеющихся у вас файлов.
Если вам нужна более гибкая версия, вы можете посчитать аргументы в блоке BEGIN.
perl -lnwE 'BEGIN { $n = scalar @ARGV }
$a{$_}++; END { for (keys %a) { print if $a{$_} == $n } }' files*