专栏首页C/C++基础Linux命令(6)——sort命令

Linux命令(6)——sort命令

1.功能

以行为单位对文本文件的内容进行排序,将结果显示在标准输出,比较原则是从行首字符向后,依次按ASCII码值进行比较,最后按升序输出。如果file参数指定多个文件,那么 sort 命令将这些文件纵向连接起来,当作一个文件进行排序。

不加任何选项时,将对整行从第一个字符开始依次向后直到行尾按照ASCII码值做升序排序。

2.格式

sort [选项] [filelist]

3.选项说明

常用命令选项如下。

-b,--ignore-leading-blanks:忽略每行前面的空格字符
-c,--check,--check=diagnose-first:检查文件是否已排序
-d,--dictionary-order:按照字典序,只考虑字母、数字及空格字符,忽略其他字符
-f,--ignore-case:排序时,将小写字母视为大写字母
-i,--ignore-nonprinting:排序时,只考虑可打印字符,忽略不可打印字符
-m,--merge:合并多个已排序的文件
-n,--numeric-sort:按数值大小排序
-o <输出文件>,--output=FILE:将排序结果输出到指定文件
-r,--reverse:逆向输出排序结果(降序排序)
-t <分隔字符>,--field-separator=SEP:指定排序时使用的分隔字符,sort命令默认字段分隔符为空格和Tab
-u,--unique:相同的数据中,仅输出一行
-k,--key=POS1[,POS2]:以第POS1栏到POS2栏排序,默认到最后一栏
--help:显示帮助信息
--version:显示版本信息

4.常用示例

(1)对/etc/passwd进行排序。

[root@www ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

(2)/etc/passwd内容以冒号:来分隔,以第三栏至行末尾栏来排序。

[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

(3)如果对/etc/passwd,以第六个域的第2个字符到第4个字符进行升序排序,再基于第一个域进行反向排序。

[root@www ~]# cat /etc/passwd | sort -t ':' -k 6.2,6.4 -k 1,1r
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
bin:x:3:3:sys:/dev:/bin/sh

可以看出,六个域的第2个字符到第4个字符是升序排序。六个域的第2个字符到第4个字符如果相同则分为一组,组内再按照第一个域进行降序排序。注意,-r 需要与第二个-k连写,否则对前面两个-k均有效。


参考文献

[1]Linux命令大全——sort命令 [2]sort manual

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 命令(86)—— head 命令

    可以指定多个文件 FILE,以空格分隔,此种情况下,输出的内容前会列出所属文件名。如果未给定 FILE 或者 FILE 是 -,则从标准输入读取。

    Dabelv
  • Golang sync.Cond 简介与用法

    Cond 实现了一个条件变量,在 Locker 的基础上增加的一个消息通知的功能,保存了一个通知列表,用来唤醒一个或所有因等待条件变量而阻塞的 Go 程,以此来...

    Dabelv
  • 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历

    二叉树是一类简单而又重要的树形结构,在数据的排序、查找和遍历方面有着广泛的应用。由于其清晰的结构,简单的逻辑,广泛的应用和大量的指针操作,在面试过程屡见不鲜,快...

    Dabelv
  • Linux 命令(86)—— head 命令

    可以指定多个文件 FILE,以空格分隔,此种情况下,输出的内容前会列出所属文件名。如果未给定 FILE 或者 FILE 是 -,则从标准输入读取。

    Dabelv
  • sort命令

    WindrunnerMax
  • linux下join命令的用法

    功能说明:将两个文件中,指定栏位内容相同的行连接起来。 语  法:join [-i][-a<1或2>][-e<字符串>][-o<格式>] [-t<字符>][-v...

    98k
  • 73条日常shell命令汇总,总有一条你需要!

    1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo "open" 2.让进程转入后台: Ctrl + z...

    小小科
  • 73 条日常 shell 命令汇总,总有一条你需要!

    1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo "open" 2.让进程转入后台: Ctrl + ...

    小小科
  • Sequential Nim(CodeForces - 1382B)【博弈】

    1.这道题乍一看以为用Nim博弈直接套用就可以了,结果通过题意发现并不是。题目中要求取石子时只能从下标最小的那一堆开始取,也就是说一堆一堆的取,不能跳着取。

    _DIY
  • 如何在ASP.NET中生成HTML5离线Web应用

    传统的Web应用程序有一个很大的症结是当用户的网络连接不好时,应用会加载失败,为了 解决这一问题,HTML5中引入了Web的离线工作的功能。离线功能使得Web应...

    葡萄城控件

扫码关注云+社区

领取腾讯云代金券