Ayuda con el command orderar (numérico)

Tengo este resultado que me gustaría orderar numéricamente por puerto (comenzando en la columna 35):

tcp 0 0 192.168.0.210:110 0.0.0.0:* LISTEN 3385/dovecot tcp 0 0 192.168.0.210:143 0.0.0.0:* LISTEN 3385/dovecot tcp 0 0 192.168.0.210:22 0.0.0.0:* LISTEN 2223/sshd tcp 0 0 192.168.0.210:25 0.0.0.0:* LISTEN 3589/master tcp 0 0 192.168.0.210:443 0.0.0.0:* LISTEN 2037/apache tcp 0 0 192.168.0.210:587 0.0.0.0:* LISTEN 3589/master tcp 0 0 192.168.0.210:80 0.0.0.0:* LISTEN 2037/apache # ^ # Sorted at this column (#35) 

Para que la nueva salida se vea así (primero el puerto más bajo):

 tcp 0 0 192.168.0.210:22 0.0.0.0:* LISTEN 2223/sshd tcp 0 0 192.168.0.210:25 0.0.0.0:* LISTEN 3589/master tcp 0 0 192.168.0.210:80 0.0.0.0:* LISTEN 2037/apache tcp 0 0 192.168.0.210:110 0.0.0.0:* LISTEN 3385/dovecot tcp 0 0 192.168.0.210:143 0.0.0.0:* LISTEN 3385/dovecot tcp 0 0 192.168.0.210:443 0.0.0.0:* LISTEN 2037/apache tcp 0 0 192.168.0.210:587 0.0.0.0:* LISTEN 3589/master # ^ # Sorted at this column (#35) 

He jugado con todas las diferentes forms de |sort , incluyendo:

 |sort -n # <- I thought this would work |sort -nk35 |sort -nk35,37 

Etcétera, etcétera. ¿Tal vez estoy malinterpretando el propósito de la bandera -k ? ¿O tal vez esos dos puntos están estropeando las cosas?

sort espera campos separados en espacios en blanco. Para que clasifique en el puerto, debe cambiar el separador de campo:

 sort -t: -nk2 file 

Aquí, estoy diciendo sort tomar : como el separador de campo. Por lo tanto, los primeros caracteres del segundo campo son el número de puerto y se ordera como usted lo desee:

 $ sort -t: -nk2 file tcp 0 0 192.168.0.210:22 0.0.0.0:* LISTEN 2223/sshd tcp 0 0 192.168.0.210:25 0.0.0.0:* LISTEN 3589/master tcp 0 0 192.168.0.210:80 0.0.0.0:* LISTEN 2037/apache tcp 0 0 192.168.0.210:110 0.0.0.0:* LISTEN 3385/dovecot tcp 0 0 192.168.0.210:143 0.0.0.0:* LISTEN 3385/dovecot tcp 0 0 192.168.0.210:443 0.0.0.0:* LISTEN 2037/apache tcp 0 0 192.168.0.210:587 0.0.0.0:* LISTEN 3589/master