0%

Linux命令之sort命令

Linux sort命令可实现对文本中的内容按行排序

abstract.png

sort命令

对文本内容按行为单位进行排序。默认使用字典序,按升序进行排序。如果期望使用降序排序,可通过 -r 选项

1
2
3
4
5
# 对文件使用字典序排序,按升序排序
sort a.txt

# 对文件使用字典序排序,按降序排序
sort -r a.txt

figure 1.png

如果期望依照数值的大小排序,则可以使用 -n 选项

1
2
# 对文件按数值的大小排序
sort -n a.txt

figure 2.png

如果每行的前3个字母为月份缩写,则可以通过 -M 选项,实现按月份排序

1
2
# 对文件按月份的大小排序
sort -M c.txt

figure 3.png

对于每行中按字段进行分隔的文本而言,可以使用 -t 来指定字段的分隔符,使用 -k 指定第几个字段作为排序键(字段编号从1开始)

1
2
3
4
5
# 指定每行中的分隔符为: 使用每行中的第2个字段作为排序键,按数值的大小升序排序
sort -t ':' -k 2n d.txt

# 指定每行中的分隔符为: 使用每行中的第3个字段作为排序键,按字典序降序排序
sort -t ':' -k 3r d.txt

figure 4.png

事实上,我们还可以指定多个排序键。当两行内容在第一个排序键中相等时,再使用第二个排序键进行比较,以此类推

1
2
3
4
5
6
7
8
9
# 指定每行中的分隔符为: 
# 先使用每行中的第2个字段作为排序键,按数值的大小升序排序
# 再使用每行中的第3个字段作为排序键,按字典序降序排序
sort -t ':' -k 2n -k 3r d.txt

# 指定每行中的分隔符为:
# 再使用每行中的第3个字段作为排序键,按字典序降序排序
# 先使用每行中的第2个字段作为排序键,按数值的大小升序排序
sort -t ':' -k 3r -k 2n d.txt

figure 5.png

参考文献

  1. Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著
请我喝杯咖啡捏~

欢迎关注我的微信公众号:青灯抽丝