perl -nE '%a = map { $.==1 || $a{$_} ? ($_,1):()} /(\d+)/g;
END{ say keys %a}' file
Explicação:
-
-nadicionará 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
$. == 1todos 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 .