Como explicado em man sort
:
-n, --numeric-sort
compare according to string numerical value
Então você quer:
$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1
Observe também que, por padrão, os campos são delimitados em branco, portanto, essas linhas nesse arquivo têm apenas um campo. Por exemplo, o primeiro campo da primeira linha é 1,2,3
, não 1
. Você precisaria adicionar -t ,
para ,-separated
fields:
sort -t, -nk1,1 file
Com -n
, sort
considera apenas a sequência de caracteres que formam um número válido no início da chave de classificação (ignorando espaços em branco à esquerda). Para essa primeira linha, sem -t,
, dependendo da implementação sort
e da localidade, 1,2,3
será considerado como 1
ou 1.2
(quando o separador decimal do usuário for ,
) ou 123
(quando o separador de milhar do usuário é ,
e sort
ignora qualquer ocorrência dele).