Seria bastante fácil fazer isso com awk
, contando o número de campos em cada linha em fileA
que são iguais às sequências no arquivo include.txt
:
awk 'NR == FNR { p[$1]; next }
{
c = 0
for (i = 1; i <= NF; ++i) if ($i in p) c++
if ( c >= 2 ) print
}' include.txt fileA
Primeiro, lê o arquivo include.txt
e usa as palavras como chaves em um array associativo. Em seguida, ele lê o segundo arquivo e, para cada linha, itera nos campos e testa cada um para ver se ele corresponde a alguma das chaves.
Para cada partida, incrementamos um contador e, se o contador for igual ou maior que dois no final, imprimiremos a linha.
Formulação alternativa do código para pessoas que gostam de "one-liners":
awk 'NR==FNR {p[$1];next} {c=0;for (i=1;i<=NF;++i) if ($i in p) c++} c>=2' include.txt fileA