根据两者中第一列的匹配值,将一个列从一个文件连接到另一个文件

时间:2017-11-14 03:55:40

标签: csv sorting unix join command-line

在linux中使用join命令,我想比较file1.csvfile2.csv的第一列以及列匹配的位置,我想添加一列{{1}到file2.csvfile1.csvfile1.csv中的第一列不同,file2.csvfile1.csv的一个子集(第一列)。

file2.csv

head file1.csv 
column1, column2, column3
1.0, 5, 3
1.5, 4, 9
2.1, 2, 1

我希望head file2.csv column1, column2, column4 1.0, 5, 9 1.2, 0, 0 1.3, 0, 1 1.5, 4, 3 2.1, 2, 5 之后:

join

我试过了head file1.csv column1, column2, column3, column4 1.0, 5, 3, 9 1.5, 4, 9, 3 2.1, 2, 1, 5 ,但它没有用。因为它也带有标题行底部:

join -1 1 -2 1 -t, -o 1.1,1.2,1.3,2.3 <(sort -k 1 file1.csv ) <(sort -k 1 file2.csv )

1 个答案:

答案 0 :(得分:1)

你只关心头柱的位置?

尝试下面一个。它只是修改了你的命令行。

join -1 1 -2 1 -t, -o 1.1,1.2,1.3,2.3 <(head -n 1 file1.csv && tail -n+2 file1.csv | sort -k1 ) <(head -n 1 file2.csv && tail -n+2 file2.csv | sort -k1 )

我希望这会对你有所帮助。