Extrai linha se os dois valores de coluna aparecerem em uma única coluna a partir de um arquivo separado

0

Eu tenho dois arquivos separados por tabulações:

Arquivo 1

123   456
135   567
234   478

Arquivo 2

123    notimportant    notimportant2
456    notimportant    notimportant2
987    notimportant    notimportant2
135    notimportant    notimportant2
234    notimportant    notimportant2
478    notimportant    notimportant2

Eu preciso extrair linhas do arquivo1 se ambas as entradas em uma única linha estiverem presentes na primeira coluna do arquivo2. Então o arquivo de saída deve ser como:

Resultado

123   456
234   478

Eu usei anteriormente este comando awk para extrair linhas se apenas a primeira coluna do arquivo1 correspondesse à primeira coluna do arquivo2

awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1

Mas não sei como expandi-lo.

    
por Rūdolfs Bērziņš 31.03.2017 / 11:41

1 resposta

2
awk 'FNR==NR{a[$1]++;next;}($1 in a)&&($2 in a){print}' file2 file1

perl -lane '
   @ARGV and $h{$F[0]}++,next;
   print if @F == grep { $h{$_} } @F;
' file2 file1
    
por 31.03.2017 / 11:48