linux sort用法介绍

本文深入探讨了Linux中sort命令的功能、语法、描述及实例应用,包括如何对文件进行排序、合并及检查排序,提供了从基本排序到复杂排序操作的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sort是Linux命令,主要用于排序文件、对已排序的文件进行合并,并检查文件以确定它们是否已排序。

语法

sort [ -A ] [ -b ] [ -c ] [ -d ] [ -f ] [ -i ] [ -m] [ -n ] [ -r ] [ -u ] [ -o OutFile ] [ -t Character ] [ -T Directory ] [ -y [ Kilobytes ] ] [ -z RecordSize ] [ [ + [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] [ - [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] ] ... [ -k KeyDefinition ] ... [ File ... ]

描述

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。-(减号)代替文件名指定标准输入。如果您不指定任何文件名,那么该命令对标准输入排序。可以使用 -o 标志指定输出文件。
如果不指定任何标志,sort 命令基于当前语言环境的整理顺序对输入文件的所有行排序。
实例:

对当前文件夹文件排序(默认):

bash-4.1$ ls -l | sort
drwxr-xr-x. 2 root root 4096 Nov  9 12:33 conf
-rw-r--r--. 1 root root 1498 Nov  9 12:33 dubbo-consumer.xml
-rw-r--r--. 1 root root 2146 Nov  9 12:33 task-config.xml
-rw-r--r--. 1 root root 3008 Nov  9 12:33 logback.xml
-rw-r--r--. 1 root root  467 Nov  9 12:33 task.properties
-rw-r--r--. 1 root root  567 Nov  9 12:33 root-bean.xml

输入当前文件夹中的文件大小并从小到大排序:

-bash-4.1$ ls -l | awk '{print $5}' | sort -n

467
567
1498
2146
3008
4096


按当前文件夹中的文件从小到大列排序,并输出每行完整信息:

-bash-4.1$ ls -l | sort  -n -k5
total 24
-rw-r--r--. 1 root root  467 Nov  9 12:33 task.properties
-rw-r--r--. 1 root root  567 Nov  9 12:33 root-bean.xml
-rw-r--r--. 1 root root 1498 Nov  9 12:33 dubbo-consumer.xml
-rw-r--r--. 1 root root 2146 Nov  9 12:33 task-config.xml
-rw-r--r--. 1 root root 3008 Nov  9 12:33 logback.xml
drwxr-xr-x. 2 root root 4096 Nov  9 12:33 conf

按第二列从小到大排序,不显示重复的值:

-bash-4.1$ ls -l | awk '{print $2}' | sort -n -u
1
2
24


将上面实例按降序排列:

-bash-4.1$ ls -l | awk '{print $2}' | sort -r -u
24
2
1


-o 参数:将排序好的结果写回到原文件:

[rocrocket@rocrocket programming]$ sort -r sample.txt -o sample
[rocrocket@rocrocket programming]$ cat sample.txt
5
4
3
2
1


-t 参数:指定列之间的分隔符,一般和 -K 连用,使用指定列排序:

[rocrocket@rocrocket programming]$ sort -n -k 2 -t ‘:’ sample.txt
10:2.5
20:3.4
30:4.5
90:5.3

其他的sort常用选项

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值