Содержимое fred
:
START
test
TEST
tEST
END
Из терминала bash, sort fred
возвращает:
END
START
test
tEST
TEST
Все хорошо. Теперь я печатаю sort fred -f
с тем же результатом для sort fred
. Но поскольку TEST
опережает tEST
, ожидаемый результат был следующим:
END
START
test
TEST
tEST
Как сохранить порядок строк для двух «равных» строк? Используя Ubuntu 18.04 и bash 4.4.20 (1) -релиз.
Я думаю, что Вы имеете в виду Стабильный вид. sort
команда действительно имеет флаг -s
который делает стабильный вид.
Отрывок от sort
страница справочника:
- s, - стабильный
стабилизируйте вид путем отключения сравнения последнего средства
Вывод sort fred -f
:
END
START
test
tEST
TEST
Вывод sort fred -fs
:
END
START
test
TEST
tEST
Используйте -s
опция также:
sort -fs fred
Вы передали -f
для создания вида нечувствительным к регистру, но так как Вы хотите сохранить первоначальный заказ строк, которые сравнивают то же Вам нужно -s
опция также. Это производит вывод, который Вы ищете.
ek@Cord:~$ sort -f fred # without -s
END
START
TEST
tEST
test
ek@Cord:~$ sort -fs fred # with -s
END
START
test
TEST
tEST
Что касается того, почему это необходимо:
sort
команда, определенная причина состоит в том, что, когда два ключа равны, сравнение последнего средства целой строки выполняется. То сравнение не сворачивает случай, даже когда -f
передается.