0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解Linux sort命令之掌握排序技巧与实用案例

马哥Linux运维 来源:马哥Linux运维 2025-01-09 10:10 次阅读

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命令,以字母序进行文本排序。如下:

[guodong@proxy ~]$ cat word.txt
one
two 
three
four


[guodong@proxy ~]$ sort word.txt
four
one 
three
two

2.数字排序

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

[guodong@proxy ~]$ cat num.txt 
100
20
3
[guodong@proxy ~]$ sort num.txt -n
3
20
100

3.指定列排序

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

[guodong@proxy ~]$ 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
[guodong@proxy ~]$ 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参数。具体如下:

[guodong@proxy ~]$ du -h
2.0G    ./test2
4.0K    ./test3
316M    ./test
2.3G    .
[guodong@proxy ~]$ du -h |sort -hr
2.3G    .
2.0G    ./test2
316M    ./test
4.0K    ./test3

5.系统进程内存占用排序

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

[guodong@proxy ~]$ ps aux|sort -gr -k 4|head -n 5
shuanghu  1740 15.7  4.6 1506764 189872 ?      Sl    5月07 142:08 compiz
root      1304  2.1  1.9 338928 80208 tty7     Ssl+  5月07  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    5月07   0:00 /usr/lib/evolution/evolution-calendar-factory
shuanghu  1833  0.0  0.8 974900 34468 ?        Sl    5月07   0:01 nautilus -n
shuanghu21110.00.665571224920?Sl5月070:16gnome-terminal

6.对文件内容进行去重

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

[guodong@proxy ~]$ cat word.txt
one
two
two
three
three
three
four
four
four


[guodong@proxy ~]$ sort -u word.txt
four
one
three
two

7.将sort输出内容写入文件

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

[guodong@proxy ~]$ cat word.txt
one
two 
three
four
[guodong@proxy ~]$ sort word.txt > word.txt
[guodong@proxy ~]$ cat word.txt #输出为空


[guodong@proxy ~]$ sort word.txt -o word.txt
[guodong@proxy ~]$ sort -u word.txt
four
one
three
two

链接:https://www.cnblogs.com/my-first-blog-lgz/p/16115664.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11320

    浏览量

    209845
  • 命令
    +关注

    关注

    5

    文章

    688

    浏览量

    22056
  • 排序
    +关注

    关注

    0

    文章

    32

    浏览量

    9721

原文标题:详解 Linux sort 命令:全面掌握排序技巧与实用案例

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux find命令详解

    find 命令是我们日常工作中比较常用的Linux命令。全面的掌握这个命令可以使很多操作达到事半功倍的效果。如果对find
    发表于 11-30 10:11 1597次阅读

    Linuxsort命令介绍

    1.命令简介以行为单位对文本文件的内容进行排序,将结果显示在标准输出,比较原则是从行首字符向后,依次按 ASCII 码值进行比较,最后按升序输出。如果 file 参数指定多个文件,那么 sort
    发表于 04-08 07:16

    linux运维命令大全

    Linux高端运维学习需要掌握大量的命令及相关工具,通读bash man page、掌握VIM使用、了解SSH是Linux高端运维工程师必备
    发表于 03-15 16:36

    Linux关机命令详解

    Linux关机命令详解linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都 可以达到重启
    发表于 01-18 12:52 3633次阅读

    Linux系统命令及其使用详解 _120页

    电子发烧友网站提供《Linux系统命令及其使用详解 _120页.doc》资料免费下载
    发表于 04-18 13:23 3次下载

    linux命令mount (挂载命令详解

     mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。
    发表于 12-11 08:50 5.3w次阅读

    Linux命令详解 [兼容模式]pdf免费下载

    linux命令详解pdf,希望对大家有帮助!
    发表于 12-15 15:54 10次下载

    Linux系统中sort排序命令的使用教程

    sort命令的功能是对文件中的各行进行排序sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各
    发表于 04-02 14:33 414次阅读

    Linux系统中EXP命令详解质量汇总

    Linux系统中EXP命令详解质量汇总
    发表于 05-14 09:35 1次下载

    Linux虚拟机tcpdump命令操作详解

    Linux虚拟机tcpdump命令操作详解
    发表于 08-12 09:50 23次下载

    排序算法merge-sort的基础知识

    本文介绍、解释、评估和实现了排序算法merge-sort 。本文的目的是为您提供有关合并排序算法的可靠背景信息,该算法是更复杂算法的基础知识。
    的头像 发表于 04-07 17:54 2627次阅读
    <b class='flag-5'>排序</b>算法merge-<b class='flag-5'>sort</b>的基础知识

    一文掌握Linux常用命令

    一文掌握Linux40个命令
    的头像 发表于 04-03 11:38 662次阅读

    使用C++ sort函数对vector进行自定义排序

    今天在学一些C++ STL容器,看到sort函数允许自定义排序规则,小小地实操了一下。
    的头像 发表于 07-22 10:12 1683次阅读

    list.sort()排序比stream().sorted()排序性能更好吗?

    看到一个评论,里面提到了list.sort()和list.strem().sorted()排序的差异。
    的头像 发表于 08-09 10:27 984次阅读
    list.<b class='flag-5'>sort</b>()<b class='flag-5'>排序</b>比stream().sorted()<b class='flag-5'>排序</b>性能更好吗?

    sort函数python用法

    sort()函数是Python中的内置函数之一,用于对可迭代对象进行排序。可迭代对象包括列表、元组和字符串等。sort()函数是一个灵活而强大的函数,在数据分析、算法实现等方面有着广泛
    的头像 发表于 11-21 15:15 1457次阅读