【发布时间】:2011-06-18 01:41:43
【问题描述】:
尽管进行了所有研究,但这并没有像我预期的那样工作。我一定是错过了什么……
文件 1...
# cat file1.csv
1 123 JohnDoe
1 456 BobDylan
1 789 BillyJean
文件 2...
# cat file2.csv
111 123 DaddyDoe
222 456 DaddyDylan
666 777 Stranger
555 789 DaddyJean
444 888 Stranger
333 999 Stranger
我正在尝试加入第二个领域。当我执行左外连接并且只包含第一个文件中的字段时,一切看起来都很花哨。
# join -1 2 -2 2 -a 1 -o 1.2 1.3 file1.csv file2.csv
123 JohnDoe
456 BobDylan
789 BillyJean
但只要我从第二个文件中包含一个字段,一切都会变得很糟糕。
# join -1 2 -2 2 -a 1 -o 1.2 1.3 2.3 file1.csv file2.csv
DaddyDoeoe
DaddyDylann
789 BillyJean DaddyJean
最后一行看起来很完美!其他人怎么了?任何想法?提前致谢!
编辑:这是我对实际 CSV 的尝试。
# cat file1.csv
1,123,JohnDoe
1,456,BobDylan
1,789,BillyJean
# cat file2.csv
111,123,DaddyDoe
222,456,DaddyDylan
666,777,Stranger
555,789,DaddyJean
444,888,Stranger
333,999,Stranger
# join -t, -1 2 -2 2 -a 1 -o 1.2 1.3 2.3 file1.csv file2.csv
,DaddyDoeoe
,DaddyDylann
789,BillyJean,DaddyJean
【问题讨论】:
-
您使用的是什么版本的操作系统?根据文件扩展名,列是否真的用“,”分隔?
-
-o 选项必须是引号,或者如果空格可以使用逗号分隔。不确定这是否是问题,但似乎是部分问题,
-
@shellter Unix 3.5。它们是制表符分隔的文件。我在尝试排除故障时去掉了逗号。 @Suroot 我试了一下,但它似乎没有改变任何东西。