linux - 基于两列合并两个文件

标签 linux unix join merge

我有一个与之前的帖子非常相似的问题: Merging two files by a single column in unix 但我想根据两列合并数据(顺序相同,因此无需排序)。 例如,

subjectid subID2 姓名 年龄
12 121 简 16
24241 克里斯汀 90
15 151 克拉克 78
23 231 乔安 31

subjectid subID2 prob_disease
12 121 0.009
24 241 0.738
15 151 0.392
23 231 1.2E-5

输出如下

subjectid SubID2 prob_disease 姓名 年龄
12 121 0.009 简 16
24 241 0.738 克里斯汀 90
15 151 0.392 克拉克 78
23 231 1.2E-5 乔安娜 31

当我使用 join 时,它只考虑第一列(subjectid)并重复 SubID2 列。 请问有没有办法通过 join 或其他方式来做到这一点?谢谢您

最佳答案

join 命令没有扫描多个字段作为连接条件的选项。因此,您必须在其中添加一些智能。假设您的文件每行都有固定数量的字段,您可以使用如下内容:

join f1 f2 | awk '{print $1" "$2" "$3" "$4" "$6}'

前提是字段计数如示例中所示。否则,您需要通过添加或删除一些字段来调整 awk 命令中的打印范围。

关于linux - 基于两列合并两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839546/

相关文章:

Linux 终端 SCREEN 命令

unix - 如何更改 shell 脚本字符编码?

linux - unix - 文件中的列数

mysql - 合并单个表上多个 select 语句的结果

linux - shell脚本中 "&&"内部变量和外部变量的区别

linux - 调试服务器的cgi程序

linux - 在基于 busybox 的嵌入式 linux 上编写脚本

bash - 查找空目录

MySQL 左连接帮助

java - JPA : Join and group by sum. MySQL查询