perl -nE '%a = map { $.==1 || $a{$_} ? ($_,1):()} /(\d+)/g;
END{ say keys %a}' file
Explicação:
-
-n
adicionará um loop ao longo de todo o programa, como:while (<>) { ... }
-
-E
é necessário para o perl executar a linha de comando (dentro desse loop). Também adiciona a possibilidade de usarsay
-
Cada linha é passada para
/(\d+)/g
, que corresponde a cada número (dígitos próximos um do outro) separadamente. Cada número, se alimentado nomap
. -
%a
é o dicionário dos números que apareceram em todas as linhas até agora. É recalculado todas as linhas (%a = ...
). -
na primeira linha
$. == 1
todos os números são armazenados no dicionário - o par (número 1) é adicionado; 1 significa True -
nas outras linhas, todos os números são filtrados em
()
, a menos que eles também estivessem presentes na última iteração$a{$_} ?
. -
Finalmente,
END{...}
imprime todos os números que se repetiram em todas as linhas .