Вид ведет себя странно на чувствительной к регистру сортировке

Если у Вас нет a which поддержка -a, или whence доступный, самокрутка:

#!/bin/sh -f

IFS=":"
for PART in $PATH
do
  if test -x "$PART/$1"
  then
    echo $PART/$1
  fi
done
5
31.08.2011, 22:00
2 ответа

Необходимо указать столбец конца, также:

$ sort -k1,1 text.txt
a       1
a       11
A       1

Заключить страницу справочника вида GNU в кавычки:

   -k, --key=POS1[,POS2]
          start a key at POS1 (origin 1), end it at POS2 (default  end  of
          line)
5
27.01.2020, 20:39
  • 1
    О. Я предполагаю, что должен иметь прочитайте руководство более тщательно :) Спасибо. –  Karel Bílek 31.08.2011, 23:38
  • 2
    , действительно странно, что это было необходимо - POS2 является очевидно дополнительным. Возможно, ошибка в sort? –  rozcietrzewiacz 01.09.2011, 11:15
  • 3
    @rozcietrzewiacz, да, это является дополнительным. Нет, это не ошибка. POS2 является дополнительным, но когда Вы не указываете его затем, значение по умолчанию используется, т.е. ключ затем содержит все столбцы до следующей новой строки. –  maxschlepzig 01.09.2011, 20:20

Вы несомненно наталкиваетесь на ошибку в sort!, Если бы у Вас не было пробелов в файле, не было бы никакого способа отсортировать его правильно:

$ cat aaa
a1
A1
a11

$ sort aaa
a1
A1
a11

$ sort -k1,1 aaa
a1
A1
a11

Еще более видимый со следующим:

$ cat bbb
A B b 0
a B b 0
A b b 1

$ sort bbb
a B b 0
A B b 0
A b b 1

$ sort -k1,2 bbb
a B b 0
A b b 1
A B b 0
1
27.01.2020, 20:39
  • 1
    То поведение корректно, все же. Я думаю. –  Karel Bílek 01.09.2011, 23:35
  • 2
    Не ошибка, а проблема локали сопоставления: у Karel ясно есть a $LC_LOCALE это не POSIX, с тех пор A не прежде a. По этой проблеме посмотрите LC_COLLATE (должен) влиять на диапазоны символов?Почему прописные буквы включены в диапазон строчных букв в awk regex?OSXне имеет du -b –  Gilles 'SO- stop being evil' 02.09.2011, 01:43
  • 3
    @Gilles редактирования, проблема не просто это A прежде или после a - это - это в некоторых случаях, это рассматривают как прежде в другом как после. –  rozcietrzewiacz 02.09.2011, 09:17
  • 4
    @Gilles хорошо, таким образом, я понимаю теперь, когда проблема с локалью, нет sort самостоятельно - но две буквы, определяемые как эквивалентный? Это абсурдно! Кто и почему когда-нибудь придумывал это? –  rozcietrzewiacz 02.09.2011, 10:04
  • 5
    @Gilles Нечувствительные к регистру виды был бы хорош как опция в некоторых случаях - но не как значение по умолчанию для локалей как en_US.UTF-8!, Кроме того, случай еще более сложен, чем это. Простой тест, предложенный в этом ответе, печатает, в зависимости от локали, также A > a или a < A но никогда A = a. Все же, sort искажение... –  rozcietrzewiacz 02.09.2011, 10:22

Теги

Похожие вопросы