我有两个带有id和name的表。我想基于name字段和输出id和id加入它们。 文件1:
id,name
a0N3000000A0JNaEAN,Guarda Val
a0Na000000G8CCfEAN,Bentleys House
a0Na000000EQVg6EAH,Alpine Lodge Resort
a0N30000007LwcaEAC,Kulm Hotel
文件2:
id,name
a0BQ00000013OeSMAU,Guarda Val
a0BQ00000013OeBMAU,Bentleys House
a0BQ00000013OeVMAU,Alpine Lodge Resort
a0BQ0000001xlQoMAI,Kulm Hotel
我希望看到的是:
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。我已经看到不同操作系统之间的连接行为可能会有所不同。 感谢
答案 0 :(得分: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
将产生所需的结果。