linux - 使用 awk 和排序

标签 linux sorting awk

<分区>

我有一个包含名称和数字的文件,如下所示:

学生.txt:

Student A F 40 50 60
Student B F 50 60 70
Student C M 60 70 80
Student D M 100 90 90
Student E F 80 90 100
Student F M 20 30 40
Student G M 30 40 50

我想使用 awk 对这些名称进行排序,并按一行的最后一个数字排序。

当我尝试

sort -k6 students.txt | awk '{print}'

给我的输出是

... 100
... 40
... 50
... 60
... 70
... 80
... 90

因此,除了第一个以外,大部分都是排序的。为什么 100 在输出的开头而不是结尾?

最佳答案

您需要通过 -n 标志使用数字排序。来自 sort(1) man page :

   -n, --numeric-sort
          compare according to string numerical value

结果:

$ sort -n -k6 students.txt
Student F M 20 30 40
Student G M 30 40 50
Student A F 40 50 60
Student B F 50 60 70
Student C M 60 70 80
Student D M 100 90 90
Student E F 80 90 100

关于linux - 使用 awk 和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53916991/

相关文章:

linux - 使用 yocto-project "no such file or directory"构建图像时 do_compile 失败

python - 根据每个字符串中的子字符串对字符串列表进行排序

javascript - 按字典值排序后如何返回字典数组的新数组

python - 如何减少词典排序代码的运行时间[Python]

ubuntu - awk 查找字符串完全匹配的行号

linux - 如何使用 awk 将文件的某个字段更改为大写?

awk - 使用 awk 从返回值中去除值

c++ - 从 shell 调用脚本和使用 system() 有什么区别?

c++ - 如何实际使用 AddressSanitizer 和 MemorySanitizer?

linux - 如何知道共享磁盘中的文件是否正在被另一个使用 bash 的 Linux 实例使用?