我尝试了简单的连接
join query.txt source.tab
基于两个文件中的第一列。很清楚source.tab 包含查询。但为什么这个操作没有结果?
这两个查询和源文件都可以在这里下载:
http://dl.dropbox.com/u/11482318/query.txt (2B)
http://dl.dropbox.com/u/11482318/source.tab (40KB)
答案 0 :(得分:3)
join
的人工页面说(如庇护所所示):
重要提示:必须在连接字段上对FILE1和FILE2进行排序。
在您的情况下,source.tab文件在第一个字段(r1.1,r2.1等)上自然排序。但是,连接所需的排序顺序将基于sort
的整理顺序(可能是r1.1,r10.1,r100.1,r11.1,r12.1等)
如果使用sort
命令对source.tab文件进行排序,然后加入,它应该可以正常工作。
(注意 - 也许幸运的是 - query.txt文件具有正确的排序顺序。)
答案 1 :(得分:1)
如果文件有标题, join 命令将不会返回结果。这会导致 join 将文件视为未排序,因此所有匹配都会失败,而不是标题中该字段的密钥。
剥离标题的一种方法是使用grep -v ",Header2," file1.txt >file2.txt
然后加入到file2.txt(假设文件已经开始排序)。另一种选择是按原样排序,允许标题保留。如果标题行不会显示在最终结果中,则此方法将起作用。