在unix中连接两个未排序的文本文件

时间:2014-01-21 09:07:42

标签: bash sorting unix join

我有两个文件,比如说:

FILE1

size  freq
  1   .4
  2   .8
  8   .3
  40   .2
  90   .1

和FILE2

size  freq
  1  .2
  3  .5
  4  .1
  60  .3
  70  .2

我喜欢以某种方式加入,结果如下:

    size  freq1  freq2
      1  .4  .2
      2  .8   0
      3   0  .5
      8   0   0
      40  .2  0
      60  0  .3
      70  0  .2
      90  .1  0

我用过

join -a 1 -a 2 -e "0" -o '0,1.2,2.2' FILE1 FILE2

但它会从两个文件中逐个排序。有没有办法同时加入和排序结果? 提前致谢

1 个答案:

答案 0 :(得分:0)

注意join不支持与sort(1)相同的键选择和比较功能(尚未)。 因此,必须使用特定方式的排序对数据进行排序,以便可以接受join(1)。特别是在这种情况下,join(1)当前不支持数字比较。 通过使用固定宽度数字字段(带前导零)保持“数字”顺序可以避免此问题,或者如果严格的数字顺序不是问题,您可以通过以前使用以下排序来进行排序操作(如默认操作) sort -k 1b,1(在连接手册页中记录)。