Antecedentes
Não está claro qual versão de sort
você está usando, mas em um sistema CentOS 7.x usando essa versão de classificação:
$ sort --version
sort (GNU coreutils) 8.22
E este arquivo de entrada de amostra:
$ cat file
other data
Acid
other data
Acid
-acid
Acid
-acid
Acid
Isso parece combinar com o que você está procurando em sua saída:
$ sort -k1 file
-acid
-acid
Acid
Acid
Acid
Acid
other data
other data
Idioma e amp; localidade
Acima, minha localidade é definida da seguinte maneira:
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Você pode obter uma lista completa com este comando:
$ locale -a
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
...
Se você tiver algum problema com sua localidade, poderá informar sort
para usar o C
locale para solucionar esses problemas:
$ LC_ALL=C sort -k1 file
-acid
-acid
Acid
Acid
Acid
Acid
other data
other data
Se você tem uma localidade como de_DE
, a classificação seria diferente:
$ LC_COLLATE=de_DE sort -k1 file
Acid
Acid
Acid
Acid
-acid
-acid
other data
other data
Novamente, para controlar isso, você pode colocar o código do idioma em C
.