奇怪的问题:连接:文件 2 未按排序顺序

奇怪的问题:连接:文件 2 未按排序顺序
sort flash_int_list.txt|join finish_comm - > t1
join: file 2 is not in sorted order

我已经对 flahs_int_list.txt 进行了排序,但它仍然显示文件 2 未按排序顺序,出了什么问题?

flash_int_list.txt 如下(仅显示前 2 行,大约有 1000 行):

1     8cvGIKL7C-M   1  1         1         0    0    0    0  -28
9     27ugSKW4-QQ   1  3         3         0    0    0    0  -28

答案1

不幸的是,手册页说这sort <no options> | join <no options>不起作用:

   Important: FILE1 and FILE2 must be sorted on the join fields.  E.g.,
   use ` sort -k 1b,1 ' if `join' has no options, or use ` join -t '' ' if
   `sort' has no options.

所以你可以尝试:

sort flash_int_list.txt | join -t '' finish_comm - > t1

或者:

sort -k 1b,1 flash_int_list.txt | join finish_comm - > t1

答案2

选项-1 FIELD -2 FIELD定义join要连接到每个文件的哪个字段。默认连接字段是第一个,由空格分隔。

选项定义-ksort使用哪个键进行排序。如果未给出键,则使用整行作为键。

因此,请确保您要加入哪些文件,并且两个文件已在这些文件上排序。

man join man sort详情请参阅。

答案3

你会经常看到 join 与流程替代

join finish_comm <(sort flash_int_list.txt) > t1

相关内容