的内容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。
答案1
答案2
也使用该-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
即使通过,比较也不会折叠大小写。