在linux中使用join
命令,我想比较file1.csv
和file2.csv
的第一列以及列匹配的位置,我想添加一列{{1}到file2.csv
。 file1.csv
和file1.csv
中的第一列不同,file2.csv
是file1.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 )
答案 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 )
我希望这会对你有所帮助。