Shell script to replace strings to and from a file

Hello All,
I have 2 files
1 ) source file eg

asasa 1.2.3.4 adfhsdfsdfasdf
zxzxzx 2.3.4.56 dsadasdasdsadasd
kjjkjkjk 30.3.4.5 asdsadsadsadsadsad
vxcvxcvx 1.2.3.4 qwewqewqeqweqwe

2) patern file
1.2.3.4 A
2.3.4.56 B
30.3.4.5 C

I need the source to be changed to

asasa A adfhsdfsdfasdf
zxzxzx B dsadasdasdsadasd
kjjkjkjk C asdsadsadsadsadsad
vxcvxcvx A qwewqewqeqweqwe

Can this be done using a shell script?

Please help

/tmp # cat Test
awk '
  NR == FNR { A[$1] = $2; next }
  { print $1, A[$2], $3 }
' pattern source

./Test
asasa A adfhsdfsdfasdf
zxzxzx B dsadasdasdsadasd
kjjkjkjk C asdsadsadsadsadsad
vxcvxcvx A qwewqewqeqweqwe

Shorter :wink:

awk 'NR==FNR{a[$1]=$2;next}{$2=a[$2]}1' pattern source

---------- Post updated at 04:53 PM ---------- Previous update was at 03:55 PM ----------

# echo 'NR==FNR{a[$1]=$2;next}{print $1,a[$2],$3}'|wc -c
      42
# echo 'NR==FNR{a[$1]=$2;next}{$2=a[$2]}1'|wc -c
      34

8 only :wink: