用于连接两个文件的 shell 脚本

用于连接两个文件的 shell 脚本

我想编写一个获取两个文件和 的shell script程序,并得到如下结果:AB

文件A

user_a tel_a addr_a
user_b tel_b addr_b

文件B

process_1 user_a
process_2 user_a
process_3 user_b

结果:

user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b

我怎样才能做到这一点?awk或者是其他东西?

答案1

join...

join -1 2 -2 1 FileB FileA

输出

user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b

输入文件需要按关键字段排序...您的示例文件已经排序,因此没有必要,但否则您可以按如下方式合并排序。

join -1 2 -2 1 <(sort -k2 FileB) <(sort FileA)

答案2

由于joinpaste并非在任何地方都可用(例如,它们不在我的基于 BusyBox 的系统上),因此以下是如何根据要求使用 awk 执行此操作:

awk 'BEGIN {
    while( (getline < "fileA") > 0) A[$1]=$2 OFS $3 # read fileA into the array A
    close("fileA")
  } {
    print $2, $1, A[$2]
  }' fileB

相关内容