的内容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)-release。
我认为您的意思是稳定排序。
sort
命令确实有一个-s
可以进行稳定排序的标志。sort
来自联机帮助页的片段:输出
sort fred -f
:输出
sort fred -fs
:也使用该
-s
选项:您已通过
-f
使排序不区分大小写,但由于您想保留比较相同的行的原始顺序,因此您也需要该-s
选项。这会产生您正在寻找的输出。至于为什么需要这个:
sort
命令中,具体的原因是,当两个key相等时,最后会进行整行的比较。即使通过了,该比较也不会折叠大小写。-f