Thursday, December 4, 2008

Replace column with column of another file awk


Input files:

$ cat fileA.txt
Name:Age:BG:Country:Class
Jack:12:A+:JP:v
Neel:13:O+:IN:vi
Ani:11:A+:US:v
Loua:10:A+:US:iv

$ cat fileB.txt
Sex:Rank:FavS
M:2:Maths
M:3:Maths
F:1:English
F:4:Maths

Required: Replace column 4 (Country) of fileA.txt with 2nd column(Rank) of fileB.txt; so the required output:

Name:Age:BG:Rank:Class
Jack:12:A+:2:v
Neel:13:O+:3:vi
Ani:11:A+:1:v
Loua:10:A+:4:iv

$ awk '
BEGIN {FS=OFS=":"}
NR == FNR {
a[FNR] = $B
next
}
$A = a[FNR]
' B=2 A=4 fileB.txt fileA.txt

Output:

Name:Age:BG:Rank:Class
Jack:12:A+:2:v
Neel:13:O+:3:vi
Ani:11:A+:1:v
Loua:10:A+:4:iv

Another solution (using paste) would be:

$ paste -d : fileA.txt fileB.txt | awk 'BEGIN {FS=OFS=":"} {print $1,$2,$3,$6}'

Name:Age:BG:Sex
Jack:12:A+:M
Neel:13:O+:M
Ani:11:A+:F
Loua:10:A+:F

Related post:

- Remove or delete a column using awk
- awk FNR variable usage example

No comments:

© Jadu Saikia www.UNIXCL.com