Como outros comentaram, será mais fácil trabalhar com os dados se forem valores separados por vírgula (CSV).
Aqui está minha solução para converter os dados em CSV:
$ cat file | sed 's/ \([0-9]\)/,/g'
Kuala Lumpur,78,56
Seoul,85,66
Karachi,95,75
Tokyo,85,60
Lahore,85,75
Manila,90,85
Substitui qualquer espaço que precede um dígito por uma vírgula. referencia o grupo ([0-9]), o dígito após o espaço. A partir daí, você pode usar
sort
com o argumento -t
para especificar um separador de campo.
$ cat file | sed 's/ \([0-9]\)/,/g' | sort -t, -k2
Kuala Lumpur,78,56
Tokyo,85,60
Seoul,85,66
Lahore,85,75
Manila,90,85
Karachi,95,75
Se você quiser converter de volta para espaços ou criar uma tabela, veja dois exemplos:
$ cat test | sed 's/ \([0-9]\)/,/g' | sort -t, -k2 | tr , ' '
Kuala Lumpur 78 56
Tokyo 85 60
Seoul 85 66
Lahore 85 75
Manila 90 85
Karachi 95 75
$ cat test | sed 's/ \([0-9]\)/,/g' | sort -t, -k2 | column -s, -t
Kuala Lumpur 78 56
Tokyo 85 60
Seoul 85 66
Lahore 85 75
Manila 90 85
Karachi 95 75