尽管进行了所有研究,但这并不像我所期望的那样工作。我必须失去了一些东西......使用Unix JOIN命令合并两个文件
文件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
最后一行看起来很完美!与其他人有什么关系?任何想法?提前致谢!
编辑:这是我的尝试与实际CSVs。
# 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
什么版本的操作系统?并且是否真的用','来扩展每个文件的分隔符? – shellter
-o选项需要加引号,否则可以使用逗号分隔,而不是空格。不知道这是否是问题,但似乎是一个部分问题, – Suroot
@shellter Unix 3.5。它们是制表符分隔的文件。在尝试排除故障时,我拿出了逗号。 @Suroot我给了这个镜头,但它似乎没有改变任何东西。 – Nate