Awk 查找并更新第3列

Awk 查找并更新第3列,awk,sed,Awk,Sed,第一档 ireuatsypmaz_001 2203 001400222BF40001 ireuatsypmaz_002 2203 001400222BF40002 ireuatsypmaz_003 2203 001400222BF4000A ireuatsypmaz_004 2203 001400222BF40009 ireuatsypmaz_001 2203 001400222BF40009 第二档 ireuat

第一档

ireuatsypmaz_001       2203   001400222BF40001
ireuatsypmaz_002       2203   001400222BF40002
ireuatsypmaz_003       2203   001400222BF4000A
ireuatsypmaz_004       2203   001400222BF40009
ireuatsypmaz_001       2203   001400222BF40009
第二档

ireuatsypmaz_003    server1
ireuatsypmaz_003    server2
ireuatsypmaz_003    server3

#> grep ireuatsypmaz_003 first_file
ireuatsypmaz_003       2203   001400222BF4000A
如果不使用for循环,如何制作此图案

ireuatsypmaz_003    server1     001400222BF4000A
ireuatsypmaz_003    server2     001400222BF4000A
ireuatsypmaz_003    server3     001400222BF4000A
顺便说一下,第二个文件是动态的,因此可以是3行、4行等等。

使用
awk

awk 'FNR == NR {map[$1] = $3; next} $1 in map {print $0, map[$1]}' f1 f2

详细信息:

FNR == NR {             # While processing the first file
  map[$1] = $3          # store the 3rd field by the 1st in a map
  next
}
$1 in map {             # While processing the second file, if $1 is found in map
   print $0, map[$1]    # print full record and value from map
}
FNR == NR {             # While processing the first file
  map[$1] = $3          # store the 3rd field by the 1st in a map
  next
}
$1 in map {             # While processing the second file, if $1 is found in map
   print $0, map[$1]    # print full record and value from map
}