Как сохранить порядок строк для двух «одинаковых» строк при сортировке и игнорировании регистра?

Содержимое 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) -релиз.

3
задан 9 September 2019 в 13:26

2 ответа

Я думаю, что Вы имеете в виду Стабильный вид. sort команда действительно имеет флаг -s который делает стабильный вид.

Отрывок от sort страница справочника:

- s, - стабильный
             стабилизируйте вид путем отключения сравнения последнего средства

Вывод sort fred -f:

END
START
test
tEST
TEST

Вывод sort fred -fs:

END
START
test
TEST
tEST
6
ответ дан 1 December 2019 в 13:05

Используйте -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

Что касается того, почему это необходимо:

5
ответ дан 1 December 2019 в 13:05

Другие вопросы по тегам:

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