首页 > 解决方案 > AWK:将两个文件中的字段与多个字段进行比较

问题描述

有人可以帮助我吗?

文件1:

Red|Circle|123|apple|orange|grapes

Blue|Square|345|apple|banana|blueberry

Red|Triangle|143|strawberry|orange|grapes

文件2:

123|Square|banana|blueberry

123|Triangle|strawberry|grapes

347|Circle|orange|strawberry

输出:

Red|Circle|123|apple|orange|grapes|Square|banana|blueberry

Red|Circle|123|apple|orange|grapes|Triangle|strawberry|grapes

标签: awk

解决方案


下面awk应该让你开始:

awk 'BEGIN {
  FS = "|"
 }
NR == FNR {
# while reading the 1st file
# store its records in the array f
f[$3] = $0
  next
 }
$1 in f {
# when match is found
# print all values
print f[$1], $0>   }' file1 file2


Red|Circle|123|apple|orange|grapes 123|Square|banana|blueberry

Red|Circle|123|apple|orange|grapes 123|Triangle|strawberry|grapes

推荐阅读