2017-10-05 60 views
0

我有2个独立的文件,每个文件由2列组成。每个文件中的一个列会有一些匹配的数据,每个文件都有一个对该文件唯一的第二列数据。同时匹配列可能不完全在每个文件示例:如何合并和对齐2个独立文件的内容

文件1

Shelf1 Apples 
Shelf2 Pears 
Shelf3 Oranges 
Shelf4 Plums 

文件2

Shelf1 Restock 
Shelf2 Out_of_Season 
Shelf4 Full 

所需的输出:

Shelf1 Apples Restock 
Shelf2 Pears  Out_of_Season 
Shelf3 Oranges 
Shelf4 Plums  Full 

注Shelf3没有进入在文件2中,期望该文本的输出在所需输出中对于该列是空白的。玩过排序和合并bash和一些数组,但没有太多的运气。任何帮助将不胜感激。

+0

我认为这样的问题在SO – RomanPerekhrest

+0

上多次被回答这些文件是否被排序?第1列中的值是否唯一? – choroba

+0

它们按照每个文件中公共列的数字排序。但其中一个文件存在空白,例如File2中缺少第3层。 – Livewireorg

回答

1

您可以使用join-a选项无与伦比的领域,阅读man join

kent$ join -a1 file1 file2 
Shelf1 Apples Restock 
Shelf2 Pears Out_of_Season 
Shelf3 Oranges 
Shelf4 Plums Full 

如果输出格式(对齐)做的事,管的连接输出到column -t,如:

join -a1 f1 f2|column -t 
+0

谢谢肯特!我试图加强你的回应,但它不会让我。因为我还没有名誉。非常感激! – Livewireorg