extrai os dados de 2 arquivos

0

Eu tenho dois arquivos, o primeiro arquivo contém apenas 1 campo, o segundo arquivo tem mais linhas do que o primeiro arquivo e também possui um campo diferente em cada linha.

Arquivo 1:

5
15
20

Arquivo 2:

3
5
O  1.25  2.30  3.75 
H  1.55  2.45  3.80
H  1.65  2.50  3.90
3
10
O  1.49  2.90  3.52
H  1.89  2.08  3.05
H  1.90  2.18  3.28
3
15
O  1.09  2.29  3.10
H  1.30  2.49  3.69
H  1.54  2.05  3.01
3
20
O  1.91  2.31  3.98 
H  1.64  2.96  3.04
H  1.07  2.49  3.49

no arquivo 2, há loop periódico, que a primeira linha é o número 3 e, em seguida, a segunda linha mostra o número como 5,10,15,20, ... e as 3 linhas que contêm 4 campos.

Eu quero comparar dois arquivos e salvar os dados quando eles tiverem o mesmo número, por exemplo, no arquivo 1, o primeiro campo é 5, eu preciso imprimir os dados do arquivo 2 somente!

corresponde ao arquivo 1 como entrada e arquivo 2 que eu preciso extrair dados, gostaria de ter a saída assim:

3
5
O  1.25  2.30  3.75
H  1.55  2.45  3.80
H  1.65  2.50  3.90
3
15
O  1.09  2.29  3.10
H  1.30  2.49  3.69
H  1.54  2.05  3.01
3
20
O  1.91  2.31  3.98 
H  1.64  2.96  3.04
H  1.07  2.49  3.49

Como posso ter a saída assim? quando FNR == NR, imprime o campo anterior e também FNR == NR e depois os próximos três campos. porque eles estão se relacionando e eu gostaria de tê-los. Muito obrigado Leila

    
por Leila 23.03.2016 / 14:51

1 resposta

0

Você pode fazer algo assim com awk :

awk 'FNR==NR{
     a[$1];next
}
(FNR%10==3 && $1 in a){
     nr=FNR+9
}
(FNR<=nr || nr==""){
     print
}' file1 file2

Aqui, presumi que há uma linha em branco depois de cada linha.

    
por 23.03.2016 / 16:32