加入两个csv文件

时间:2017-04-05 20:31:58

标签: linux csv unix join

我需要在'contract'列上合并这两个已排序的csv文件(这对两个文件都很常见):

file1.csv

  

数据;客户端;合同

     

2017年3月4日; LA00024; 1-456

     

2017年3月4日; LA00025; 1-789

file2.csv

  

合同; PDA

     

1-456; 00024

     

1-789; 00025

我想得到的输出是一个独特的表:

  

数据;客户端;合同; PDA

     

2017年3月4日; LA00024; 1-456; 00024

     

2017年3月4日; LA00025; 1-789; 00025

但是使用命令

  

$ join -o 1.1 1.2 1.3 2.2 -t“;” -1 3 -2 1 file1.csv file2.csv

我得到的结果只是一行

  

$ data; client; contract; PdA

除了输入文件中的标题合并之外,连接不会返回任何内容吗? 为什么会这样?

1 个答案:

答案 0 :(得分:1)

join之前对文件进行排序。

join -o 1.1,1.2,1.3,2.2 -t ';' -1 3 -2 1 <(sort -n -t";" -k3 file1.csv) <(sort -n -t";" -k1 file2.csv)

PS:对于示例数据,相关命令对我有用。 ,中必填-o FORMAT