![奇怪的问题:连接:文件 2 未按排序顺序](https://linux22.com/image/27541/%E5%A5%87%E6%80%AA%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%9A%E8%BF%9E%E6%8E%A5%EF%BC%9A%E6%96%87%E4%BB%B6%202%20%E6%9C%AA%E6%8C%89%E6%8E%92%E5%BA%8F%E9%A1%BA%E5%BA%8F.png)
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
要连接到每个文件的哪个字段。默认连接字段是第一个,由空格分隔。
选项定义-k
了sort
使用哪个键进行排序。如果未给出键,则使用整行作为键。
因此,请确保您要加入哪些文件,并且两个文件已在这些文件上排序。
man join
man sort
详情请参阅。
答案3
你会经常看到 join 与流程替代
join finish_comm <(sort flash_int_list.txt) > t1