尽管进行了所有研究,但这并不像我预期的那样有效。我一定错过了什么......
档案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
答案 0 :(得分:5)
您使用了-a
选项。
-a
file_number除了默认输出外,还要为文件file_number中的每个不可操作行生成一行。
此外,奇数覆盖行为表示您已嵌入回车符(\r
)。我会用cat -v
或文本编辑器仔细检查那些fies,这些编辑器并不试图对Windows文件“聪明”。
答案 1 :(得分:2)
在命令中使用正确的“字段”分隔符。
当我将数据更改为true csv并使用
时join -t, -1 2 -2 2 -a 1 -o 1.2 1.3 2.3 file1.csv file2.csv
# ---^^^
我得到了
123,JohnDoe,DaddyDoe
456,BobDylan,DaddyDylan
789,BillyJean,DaddyJean
我希望这会有所帮助。
答案 2 :(得分:-1)
如果您正在执行此命令行,为什么不使用粘贴? paste -d,file1 file2>> file3的
-d arugment是分隔符