Поведение команды сортировки GNU (с небуквенными символами ASCII, такими как точка или точка с запятой)

#linux #shell #command-line

#linux #оболочка #командная строка

Вопрос:

Я хочу, чтобы sort команда обрабатывала все символы одинаково.

Например, когда я делаю

 $ echo -e 'TEST.bnTESTanTESTc' | sort
TESTa
TEST.b
TESTc
  

точка игнорируется.

Я хотел бы получить TEST.b последнюю или первую позицию. Однако я не могу найти правильный параметр на странице руководства.

(моя версия sort взята из GNU core utilities).

Комментарии:

1. Какой языковой стандарт вы используете?

2. У меня был «LANG= en_US.UTF-8»

3.Также нашел эту ссылку: superuser.com/questions/226449 /… echo -e 'TEST.bnTESTanTESTc' | sort -V также работает без настройки локали.

Ответ №1:

Принудительно выполните сортировку в C , чтобы сравнить исходные значения символов.

 $ echo -e 'TEST.bnTESTanTESTc' | LC_COLLATE=C sort
TEST.b
TESTa
TESTc
  

Комментарии:

1. Я попробовал LC_ALL=C, но, похоже, в некоторых случаях это не удается? LC_COLLATE=C сработало лучше всего!