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
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
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
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
Tags shell-script