Estou tentando classificar um arquivo como este (que é uma lista de nomes de sub-rotinas)
cfn=(1370) __lib_file_MOD_file_open
fn=(1368) __universe_MOD_general_boot
fn=(916) __universe_MOD_general_main
fn=(6142) __grid_var_MOD_get_overlap
...
de acordo com o número inteiro entre parênteses. Eu tentei pela primeira vez o comando de classificação como
sort -t '=' -k 2 routine_list.txt
mas então fn = (916) vem no final da saída.
fn=(1368) __universe_MOD_general_boot
cfn=(1370) __lib_file_MOD_file_open
fn=(6142) __grid_var_MOD_get_overlap
...
fn=(916) __universe_MOD_general_main
mas gostaria que os números fossem classificados em ordem crescente (916 -> 1368 -> 1370 -> ...) É possível fazer isso de maneira relativamente simples usando vários comandos ou opções?
Respostas:
E se:
Teste :
-n
indica que estamos ordenando numericamentet'('
define o delimitador como(
-k2
define a chavesort
como o segundo campo, ou seja, começando dos dígitos até o final da linha.fonte
(
como delimitador em vez de=
como se usar(
, em seguida, a classificação pode começar numericamente do ponto do segundo campo muito começando ..Tente isso. Define o delimitador como = e, em seguida, usa o campo 2 do caractere 2 em diante (ignorando o "(").
Ou até
fonte