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
}