2017-02-23 64 views
2

我有两个文件,比如像:如何巧妙地将两个文件与唯一键合并?

文件1:

A,Content1 
B,Content2 
C,Content3 

文件2:

D,Content4 
E,Content5 
B,Content6 

有一个在文件1和文件2相同的密钥,我可以巧妙的是,合并两个文件结果文件如下:

A,Content1 
B,Content2 
C,Content3 
D,Content4 
F,Content5 

回答

0

如果您的文件不是太多bi克(这是我会从你的shell的用法假设):

#!/bin/bash 
keys=$(cat "[email protected]" | cut -d',' -f1 | sort -u) 
for key in $keys 
do 
    grep -h $key "[email protected]" | head -1 
done 

基本上是:

  • 提取密钥(的东西,是第一个逗号之前)

  • 发现该文件中第一次出现该密钥(即头-1)

+1

只需几点提示,当''空格出现时,使用''$'''覆盖'$ *'来保留分组。另外,'$(echo $ keys)'可以用'$ keys'替换。 –

1

您应该能够与单一sort实现这一点:

sort -t',' -k1,1 -u file1 file2 

它设置字段分隔符逗号,排序和上进行重复数据删除仅第一个字段。

+1

请注意,订单很重要。如果OP希望'file2'中的列获胜,则该命令应该交换到'-u file2 file1' – bishop

相关问题