Referência de mapeamento de arquivo de outro arquivo

0

Arquivo1.txt

age name city
23  ABC  delhi
25  xyz  mumbai
12  xxx  pune 
21  YYY delhi

Arquivo2.txt

city   pincode
delhi  001
mumabi 002
pune   003

Eu preciso substituir a coluna da cidade no arquivo1 pelo código PIN de file2 . também entrada duplicada deve ser arquivada.

age name pincode
23  ABC  001
25  xyz  002
12  xxx  003 
21  YYY 001
    
por Vikrant Gupta 27.11.2014 / 08:27

2 respostas

1

usando awk :

awk 'NR==FNR{a[$1]=$2}NR>FNR{if($3 in a){print $1,$2,a[$3]}}' file2 file1
age name pincode
23 ABC 001
25 xyz 002
12 xxx 003
21 YYY 001
    
por 27.11.2014 / 09:04
0

Abaixo, o programa awk irá ajudá-lo.

#!/usr/bin/awk -f

FILENAME == "file2.txt" {
    if (FNR > 1) {
        city[$1]=$2
    }
}

FILENAME == "file1.txt" {
    if (FNR > 1 ) {
        print($1, $2, city[$3])
        } else {
        print
    }
}

Ao executar o script, você deve fornecer o file2.txt antes de file1.txt , pois o mapeamento deve ser criado primeiro e, em seguida, a substituição.

Saída

$ ./city.awk file2.txt  file1.txt 
age name city
23 ABC 001
25 xyz 002
12 xxx 003
21 YYY 001
    
por 27.11.2014 / 11:29