Sería bastante fácil hacer esto con awk
, contando el número de campos en cada línea en fileA
que son iguales a las cadenas en el archivo 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
Primero lee el archivo include.txt
y usa las palabras como claves en una matriz asociativa. Luego lee el segundo archivo y para cada fila, itera sobre los campos y prueba cada uno para ver si coincide con alguna de las claves.
Para cada coincidencia, incrementamos un contador, y si el contador es igual o mayor que dos al final, imprimimos la línea.
Formulación alternativa del código para personas a las que les gusta "una -líneas":
awk 'NR==FNR {p[$1];next} {c=0;for (i=1;i<=NF;++i) if ($i in p) c++} c>=2' include.txt fileA