Unix的多个字段加入两个文件 [英] Unix join on multiple fields on two files

查看:84
本文介绍了Unix的多个字段加入两个文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个文件

猫test1.txt的

  1 | 2 | 3 | 42 | 3 | 4 | 43 | 4 | 5 | 5

猫的test2.txt

  1 | 2 | 4 | 52 | 3 | 5 | 63 | 5 | 7 | 7

我的输出应为

  1 | 2 | 3 | 4 | 4 | 52 | 3 | 4 | 4 | 5 | 6

这就像从文件1和3,4的字段1和2加入两个文件,​​并得到1,2,3,4的值,从文件2。

请帮我这个?


解决方案

 的awk -F \\ | 'NR == FNR {
  F2 [$ 1,$ 2] = $ 3 OFS $ 4个
  下一个
  }
($ 1,$ 2)F2 {
  打印$ 0时,F2 [$ 1,$ 2]
  }'OFS = \\ |的test2.txt test1.txt的

I have a two files

cat test1.txt

1|2|3|4

2|3|4|4

3|4|5|5

cat test2.txt

1|2|4|5

2|3|5|6

3|5|7|7

My output should be

1|2|3|4|4|5

2|3|4|4|5|6

Its like joining two files on fields 1 and 2 and get the values of 1,2,3,4 from file 1 and 3,4, from file 2.

Please help me with this?

解决方案

awk -F\| 'NR == FNR {
  f2[$1, $2] = $3 OFS $4
  next
  }
($1, $2) in f2 {
  print $0, f2[$1, $2]
  }' OFS=\| test2.txt test1.txt

这篇关于Unix的多个字段加入两个文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆