0

我有两个带有 id 和 name 的表。我想根据名称字段和输出 id 和 id 加入它们。文件1:

身份证,姓名

a0N3000000A0JNaEAN,瓜达瓦尔

a0Na000000G8CCfEAN,宾利大厦

a0Na000000EQVg6EAH,高山小屋度假村

a0N30000007LwcaEAC,库尔姆酒店

文件2:

身份证,姓名

a0BQ00000013OeSMAU,瓜达瓦尔

a0BQ00000013OeBMAU,宾利之家

a0BQ00000013OeVMAU,高山小屋度假村

a0BQ0000001xlQoMAI,库尔姆酒店

我希望看到的是:

id.1, id.2

a0N3000000A0JNaEAN,a0BQ00000013OeSMAU

a0Na000000G8CCfEAN,a0BQ00000013OeBMAU

a0Na000000EQVg6EAH,a0BQ00000013OeVMAU

a0N30000007LwcaEAC,a0BQ0000001xlQoMAI

我试图乱写一些东西,但我得到的最接近的是:

加入 -t, -a1 -a2 -1 2 -2 2 -o '0,1.2' <(sort sandees.1.csv) <(sort prodees.1.csv)

这只是打印出名称。作为记录,我使用的是 OS X 10.8。我已经看到不同操作系统之间的连接行为可能会有所不同。谢谢

4

1 回答 1

0

首先要做的是将您的输入文件作为文件获取;之后,您可以使用更高级的语法。

接下来是按照join需要的方式进行排序,即在第二个字段而不是第一个字段上对每个文件进行排序。你需要使用:

sort -t, -k2 sandees1.csv >sandees1_sorted.csv
sort -t, -k2 prodees1.csv >prodees1_sorted.csv

您的输出格式,-o指定键加上第一个文件的第二个字段。你说你想要每个文件的第一个字段。

join -t, -a1 -a2 -1 2 -2 2 -o '1.1,2.1' sandees1_sorted.csv prodees1_sorted.csv 

会产生想要的结果。

于 2013-06-06T12:50:44.463 回答