Comparando dois arquivos usando a linguagem awk

1

Eu tenho dois arquivos chamados file1 e file2. Eu quero comparar com o NR dos primeiros arquivos com o primeiro campo do arquivo2, ou seja, $ 1. Assim: if (file1.NR == file2. $ 1) {então faça alguns cálculos}. Por favor me ajude se algum corpo puder.

Arquivo1

t 0.00031
r 0.000558677
r 0.000558884
r 0.000559019
t 0.000649164
r 0.000897651
r 0.000897716
t 0.000987716
............
............

e assim por diante. Linhas totais, ou seja, NR no Arquivo1 são 579.

Arquivo2

9 0.00031
17 0.000649164
27 0.000987716
37 0.00129372
47 0.00163994
6 0.00194716
66 0.00227338
.............
.............

e assim por diante. As linhas totais, ou seja, NR no Arquivo2 são 82.

    
por mmkarim91 06.02.2015 / 06:15

1 resposta

1

Você está basicamente tentando usar o segundo arquivo como um índice. Você pode filtrar o arquivo primeiro, manter apenas as linhas desejadas e processar o resultado linha por linha.

Provavelmente, é mais fácil criar uma matriz awk de números de linha para processar.

awk 'NR==FNR { array[FNR] = $1 }
NR!=FNR { file1_lines[FNR] = $0 }
END { for(linenum in array) { print file1_lines[array[linenum]] } }' file2 file1

Você pode redirecionar isso para outro arquivo e, em seguida, processar o todo sem filtragem.

    
por 06.02.2015 / 13:46

Tags