数字排序无法正确排序文件

Jer*_*eld 1 sort join

我使用 sort 命令对 file1.txt 进行数字排序。

~]# sort -n -o file1.txt file1.txt
0 Barack
50 George
60 Ronald
100 Bill
Run Code Online (Sandbox Code Playgroud)

排序检查命令声明文件未排序。

~]# sort -c file1.txt
sort: file1.txt:4: disorder: 100 Bill
Run Code Online (Sandbox Code Playgroud)

我手动修改文件,然后放置“100 Bill”。

~]# cat file1.txt
0 Barack
100 Bill
50 George
60 Ronald
Run Code Online (Sandbox Code Playgroud)

现在,排序检查命令不会产生 stdout 或 stderr,这意味着文件已正确排序。正确排序后,我现在可以加入文件。似乎第一个字符用于知道文件是否已排序而不是整个整数。

sort -c file1.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法对文件进行排序,以便“100 Bill”在第 2 行?我无法手动执行此操作,因为此问题的实际应用涉及日常工作处理的数百行文本。

Ste*_*itt 5

如果你想使用一个文件 with join,你需要确保它在连接键上按字典顺序排序,这意味着你不应该使用-nwith sort。您始终可以join再次按数字对运算结果进行排序。

运行时sort -c,您需要指定与用于对文件进行排序相同的排序参数:因此,如果要检查文件是否按数字排序,请运行sort -c -n.

因此,在您的情况下,运行sort -o file1.txt file1.txt以按字典顺序对文件进行排序以供使用join(使用第一个字段作为连接字段)。