juntando 2 arquivos em 2 colunas, mas em números de colunas diferentes usando o awk

0

Eu tenho 2 arquivos que devem ser juntados em $ 1, $ 2 do primeiro arquivo e $ 1, $ 8 do segundo arquivo usando o awk. Alguém pode fornecer a solução para isso, já que este é um requisito urgente. Obrigado antecipadamente

arquivo1:

111,123abc,eee,ttt,yyy
222,234bcd,ttt,yyy,333

arquivo2:

111, hhhh, eeee, rere , 23,2014,123abc

222, jjkj, 7878, uhjj, 1,45,2013,234bcd

333, aaa, hhh, jjjj, 2,78,590,567acd

saída:

111,123abc,hhhh,eeee,rere,,23,2014
222,234bcd,jjkj,7878,uhjj,1,45,2013
    
por harinath 26.08.2014 / 12:20

2 respostas

2

Tente:

$ awk -F, -v OFS=, 'NR==FNR{a[$1,$2]=1; next} ($1,$8) in a {print $1,$8,$2,$3,$4,$5,$6,$7}' file1 file2

que dá:

111,123abc,hhh,eeee,rere,,23,2014,123abc
222,234bcd,jjkj,7878,uhjj,1,45,2013,234bcd

Isso não é exatamente o mesmo que sua saída, pois você tem 8 colunas no primeiro e 9 no segundo. Eu assumi que é um erro de digitação: -)

    
por 26.08.2014 / 13:21
1

Se os arquivos estiverem classificados no campo de junção (campo # 1), como mostrado no seu exemplo, você poderá usar o comando join

join -t, -o 1.1,1.2,2.3,2.4,2.5,2.6,2.7,2.8 file1 file2
    
por 26.08.2014 / 13:34

Tags