Eu tenho dois arquivos t1
e t2
.
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
Eu quero juntá-los na 8ª coluna de t1 e na 2ª coluna de t2. Já os tenho em ordem. Vamos provar isso.
root@localhost:~# awk '{print $8}' t1
479
24968
root@localhost:~# awk '{print $2}' t2
88
96
24965
24968
Agora, quando eu join
os, recebi o seguinte erro.
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:~#
Por que me diz que t2 não está classificado na linha 3? Como você pode ver, já foi classificado na coluna de junção.
Eles são classificados numericamente, mas
join
exigem que sejam classificados lexicograficamente: 24968, depois 479; e 24965, 24968, 88, depois 96.