【问题标题】:Joining one column from a file to another file based on matched value of first column in both根据两者中第一列的匹配值将一个列从一个文件连接到另一个文件
【发布时间】:2017-11-14 03:55:39
【问题描述】:

在linux中使用join命令,我想比较file1.csvfile2.csv的第一列,在列匹配的地方,我想在file1.csv中添加file2.csv列。 file1.csvfile2.csv 中的第一列不同,file1.csvfile2.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 ),但它不起作用。因为它也带来了标题行底部:

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, 5, 3, 9
1.5, 4, 9, 3
2.1, 2, 1, 5
column1, column2, column3, column4

【问题讨论】:

    标签: csv sorting unix join command-line


    【解决方案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 )
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2022-01-06
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      相关资源
      最近更新 更多