linux命令学习--sort排序命令

在linux的只用过程中,总是避免不了排序问题。比如,topN问题。linux提供了sort排序命令,支持常用的排序功能。

常用参数

sort命令支持很多参数,常用参数如下:

短参数长参数说明
-n– number-sort按字符串数值排序,与-g区别为不转为浮点数
-g–general-number-sort按通用数值排序,支持科学计数法
-f–ignore-case忽略大小写,默认大小写字母不同
-k–key=POS1[,POS2]排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序
-t–field-separator=SEP指定列的分割符
-r–reverse降序排序,默认为升序
-h–human-numeric-sort使用易读性数字(例如: 2K 1G)
-u–unique去除重复的行
-o–output=FILE将输出写入文件

常用用法举例

1.默认排序

默认情况下,sort命令,以字母序进行文本排序。如下:

shuanghu@shuanghu:tmp$cat word.txt
one
two 
three
four

shuanghu@shuanghu:tmp$sort word.txt
four
one
three
two
2.数字排序

如果想对数字进行排序,可以使用-n参数

shuanghu@shuanghu:tmp$ cat num.txt 
100
20
3
shuanghu@shuanghu:tmp$ sort num.txt -n
3
20
100
3.指定列排序

sort排序的时候,可以按字段分割的数据进行排序。-t参数表示行的分割字符,-k表示第几列。当然,可以进行降序排序,-r参数可以实现。
下面是对passwd文件,以冒号(:)进行分割,然后对第三列以数字方式进行降序排序。

shuanghu@shuanghu:etc$ cat passwd 
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
shuanghu@shuanghu:etc$ sort -t ':' -k 3 -nr passwd 
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
games:x:5:60:games:/usr/games:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
4.文件夹大小排序

在du的时候,加上-h可以使用易读性数字,比如2k,1g,3M这种。sort也支持-h参数。
比如,du一个文件夹下的目录大小后,想以文件大小进行排序。由于du -h的结果是3k,2M,1G这种,不能简单的按数字排序。所以,可以使用-h参数。具体如下:

shuanghu@shuanghu:tmp$ du -h
2.0G    ./test2
4.0K    ./test3
316M    ./test
2.3G    .
shuanghu@shuanghu:tmp$ du -h |sort -hr
2.3G    .
2.0G    ./test2
316M    ./test
4.0K    ./test3
5.系统进程内存占用排序

查看系统进程中,内存占用最多的前5个进程信息

shuanghu@shuanghu:tmp$ ps aux|sort -gr -k 4|head -n 5
shuanghu  1740 15.7  4.6 1506764 189872 ?      Sl    507 142:08 compiz
root      1304  2.1  1.9 338928 80208 tty7     Ssl+  507  19:29 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
shuanghu  1933  0.0  1.1 1074520 46708 ?       Sl    507   0:00 /usr/lib/evolution/evolution-calendar-factory
shuanghu  1833  0.0  0.8 974900 34468 ?        Sl    507   0:01 nautilus -n
shuanghu  2111  0.0  0.6 655712 24920 ?        Sl    507   0:16 gnome-terminal
6.对文件内容进行去重

如果文件内容有很多重复的,需要进行去重。sort也是支持的,可以通过-u参数使用

shuanghu@shuanghu:tmp$cat word.txt
one
two
two
three
three
three
four
four
four

shuanghu@shuanghu:tmp$sort -u word.txt
four
one
three
two
7.将sort输出内容写入文件

在shell中,一般将控制台内容写入文件,可以使用重定向,但如果想把sort的排序内容写回文件,则不能使用重定向。则需要-o参数。具体如下:

shuanghu@shuanghu:tmp$cat word.txt
one
two 
three
four
shuanghu@shuanghu:tmp$sort word.txt > word.txt
shuanghu@shuanghu:tmp$cat word.txt #输出为空

shuanghu@shuanghu:tmp$sort word.txt -o word.txt
shuanghu@shuanghu:tmp$sort -u word.txt
four
one
three
two
  • 12
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux文件排序命令有很多,常用的有以下几种: 1. ls命令:ls命令可以按照文件名、文件大小、文件修改时间等进行排序。例如,ls -lS可以按照文件大小从大到小排序。 2. sort命令sort命令可以对文件内容进行排序。例如,sort -n可以按照数字大小排序sort -r可以倒序排序。 3. find命令:find命令可以按照文件属性进行排序。例如,find . -type f -printf '%T@ %p\n' | sort -n可以按照文件修改时间排序。 4. du命令:du命令可以按照文件大小进行排序。例如,du -sh * | sort -h可以按照文件大小从小到大排序。 5. awk命令:awk命令可以对文件内容进行排序和处理。例如,ls -l | awk '{print $5 " " $9}' | sort -n可以按照文件大小排序。 以上是常用的几种Linux文件排序命令,可以根据实际需求选择使用。 ### 回答2: Linux文件排序命令是一种非常重要的文件操作命令,可以帮助我们对文件进行按照名称、大小、时间等不同方式进行排序。下面是一些常见的Linux文件排序命令: 1. ls命令中的-S选项:按文件大小进行排序。使用ls -S命令可以将文件按照大小进行排序,从大到小。 2. ls命令中的-t选项:按时间进行排序。使用ls -t命令可以将文件按照修改时间进行排序,最新的文件排在前面。 3. ls命令中的-r选项:逆序排序。使用ls -r命令可以将文件逆序排列,从后往前。 4. sort命令:对文件行进行排序sort命令用于对文件行进行排序,默认按照字典顺序进行排序。 5. du命令中的-s选项:按大小进行汇总。使用du -s命令可以将不同文件夹下所有文件的大小进行汇总,并按文件大小进行排序。 以上这些 Linux 文件排序命令都非常简单易用,但是对于不同的需求,我们可以结合这些命令进行组合使用,从而更加灵活的找到我们想要的排序结果。 ### 回答3: 在Linux操作系统中,有多种方法可以对文件进行排序排序可以帮助我们更好地组织文件,提高文件的可读性和可用性。以下是一些常用的Linux文件排序命令。 1. sort sort命令可以按字母顺序对文本文件进行排序。如果想要按照数字排序,可以使用-n选项。如果想要排序结果去重,可以使用-u选项。sort命令还可以用于对文件的特定字段进行排序,例如使用-k选项。 2. ls ls命令可以列出当前目录下的文件列表。通过在ls命令中添加不同的选项,可以按照大小、修改时间等条件对文件进行排序。例如,使用-S选项按文件大小进行排序,使用-t选项按修改时间排序。 3. find find命令可以帮助我们查找特定目录下的文件,并可以按照不同的排序条件进行输出。例如,要按文件修改时间进行排序,可以使用-mtime选项,要按文件大小进行排序,可以使用-size选项。 4. du du命令可以计算文件夹占用的硬盘空间大小,并可以按照不同的排序条件进行显示。通过使用不同的选项,可以按文件大小、文件夹深度等条件进行排序。 以上是一些常用的Linux文件排序命令。使用这些命令可以轻松对文件进行排序和组织,提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值