bash - 如何按字母顺序对主列进行排序,然后按数字顺序对辅助列进行排序?

标签 bash shell sorting

假设有一个文本文件:

10  A   QAZ
5   A   EDC
14  B   RFV
3   A   WSX
7   B   TGB

我想将其排序为第二列作为主列,按字母顺序排列,第一列作为辅助列,按数字顺序排列。以下是预期结果:

3   A   WSX
5   A   EDC
10  A   QAZ
7   B   TGB
14  B   RFV

我尝试了 sort -k 2,2 -k 1,1 a.txt -nsort -k 2,2 -k 1,1 a.txt但两者都给出了错误的结果。我应该怎么解决这个问题?谢谢。

最佳答案

这应该有效:

sort -b -k2,2 -k1,1n

-b 是必不可少的,没有它,输出是错误的,因为 sort 错误地确定了第二列的位置。有关详细信息,请参阅 man sort(或 here)。

此外,请检查您的区域设置。它们可以影响 sort 的工作方式。

关于bash - 如何按字母顺序对主列进行排序,然后按数字顺序对辅助列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11831452/

相关文章:

python - 有什么方法可以在不使用 shell=True 的情况下使用子进程模块在 Python 中执行管道命令?

bash - 内部带有 nohup 的脚本无法正确退出

BASH 在没有 GET 参数的情况下获取文件扩展名?

python - 在python中将带有双引号的命令传递给subprocess.call

python - Centos6.9安装python3.5 make后显示error permission denied

regex - 使用带有方括号和引号的 sed 删除模式

bash - 如何在 shell 中向下移动一行?

c# - 在 C# 中交替排序或重新排序列表

java - 如何根据特定索引范围对 ArrayList<String> 进行排序

java - Java 需要学生成绩排序帮助