Хорошо. Сам разобрался... в конце концов. Проблема в том, что Ubuntu был установлен с зашифрованным домашним каталогом. Вот почему файлы в ~/.ssh
не были доступны службе, пока я не вошел в систему (, поэтому расшифровал домашний каталог )и перезапустил его.
Снять шифрование было непросто. Я нашел эти инструкции лучшими.
Неясно, какую версию sort
вы используете, но в системе CentOS 7.x используется эта версия вроде:
$ sort --version
sort (GNU coreutils) 8.22
И этот образец входного файла:
$ cat file
other data
Acid
other data
Acid
-acid
Acid
-acid
Acid
Это похоже на то, что вы ищете в выводе:
$ sort -k1 file
-acid
-acid
Acid
Acid
Acid
Acid
other data
other data
В приведенном выше примере моя локаль установлена следующим образом:
$ 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=
Вы можете получить полный список этой командой:
$ locale -a
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
...
Если вы столкнулись с проблемой, связанной с вашей локалью, вы можете указать sort
использовать локаль C
для решения этих проблем:
$ LC_ALL=C sort -k1 file
-acid
-acid
Acid
Acid
Acid
Acid
other data
other data
Если у вас есть языковой стандарт, такой как de_DE
, сортировка будет другой:
$ LC_COLLATE=de_DE sort -k1 file
Acid
Acid
Acid
Acid
-acid
-acid
other data
other data
Опять же, чтобы контролировать это, вы можете установить локаль на C
.