Linux 使用awk和排序
我有一个包含如下名称和数字的文件: students.txt:Linux 使用awk和排序,linux,sorting,awk,Linux,Sorting,Awk,我有一个包含如下名称和数字的文件: students.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 '{
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
标志使用数字排序。从排序(1)
:
结果:
$ 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
$sort-n-k6 students.txt
学生F M 20 30 40
学生G M 30 40 50
学生A F 40 50 60
学生乙F 50 60 70
学生C M 60 70 80
学生D M 100 90
学生E F 80 90 100
这里不需要
|awk'{print}
。你是对的,为了清晰起见,我的第一次尝试最初是|awk'{print$1”“$2}'
,但我在去掉它后把它留在那里是错误的。可能是重复的
$ 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