我有两张有id和name的桌子。我想根据name字段和输出id和id加入它们。File1:
id,姓名 a0N3000000A0JNaEAN,瓜达瓦尔 a0Na000000G8CCfEAN,本特利之家 a0Na000000EQVg6EAH,阿尔卑斯酒店度假村 a0N30000007LwcaEAC,库姆酒店
File2:
id,姓名 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) <(排序prodees.1.csv)
把名字打印出来。为了记录在案,我使用的是OSX10.8。我已经看到,不同的OSes之间的连接行为可能有所不同。谢谢
发布于 2013-06-06 12:50:44
要做的第一件事是将输入文件作为文件;在此之后,您可以使用更高级的语法。
下一步是按照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 会产生预期的结果。
https://stackoverflow.com/questions/16961641
复制相似问题