2017-02-23 81 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

相關問題