“join”实用程序报告:文件未排序,但实际上已排序

Jus*_*ner 2 text-processing join text-formatting

我有两个文件t1t2.

root@localhost:~#
root@localhost:~# cat t1
udp  UNCONN  0  0    0.0.0.0:68      0.0.0.0:*  users:(("dhclient",pid=479,fd=7))     479
tcp  LISTEN  0  128  127.0.0.1:6060  0.0.0.0:*  users:(("gggg-ruit",pid=24968,fd=5))  24968
root@localhost:~#
root@localhost:~# cat t2
root        88  0.0  0.0      0     0 ?        I<   Jan06   0:00 [scsi_tmf_0]
root        96  0.0  0.0      0     0 ?        I<   Jan06   0:00 [ipv6_addrconf]
root     24965  0.0  0.2  11592  3004 ?        S    Jan12   0:00 bash /root/restart_gggg.sh
root     24968  0.7  5.2 112488 53472 ?        Sl   Jan12  30:52 /usr/local/bin/gggg-ruit -singleInstance :44444
Run Code Online (Sandbox Code Playgroud)

我想在 t1 的第 8 列和 t2 的第 2 列加入他们。我已经把它们按顺序排列了。让我们证明一下。

root@localhost:~# awk '{print $8}' t1
479
24968
root@localhost:~# awk '{print $2}' t2
88
96
24965
24968
Run Code Online (Sandbox Code Playgroud)

现在,当我join使用它们时,我收到以下错误。

root@localhost:~# join -1 8 -2 2 -o 2.1,2.2,1.1,1.2,1.5,1.6,2.11 t1 t2
join: t2:3: is not sorted: root     24965  0.0  0.2  11592  3004 ?        S    Jan12   0:00 bash /root/restart_gggg.sh
root@localhost:~#
Run Code Online (Sandbox Code Playgroud)

为什么它告诉我 t2 没有在第 3 行排序?正如您所看到的,它已经在连接列上排序了。

Ste*_*itt 6

他们\xe2\x80\x99按数字排序,但是join要求按字典顺序排序:24968,然后是479;以及 24965、24968、88,然后是 96。

\n