一、命令简介

  Linux sort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序。shell中sort命令有3中执行模式,分别是排序文本,检查文件是否已经排序,合并文件。

二、使用示例

1、默认按照第一列的ASCII 码次序排序

[root@test1 tmp]# cat 4.log |sortadm:x:3:4:adm:/var/adm:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinroot:x:0:0:root:/root:/bin/bash

2、按照数字排序

使用-n参数按照数字排序

[root@test1 tmp]# cat 1.log
4 a
10 b
1 c
[root@test1 tmp]# cat 1.log |sort -n
1 c
4 a
10 b

3、指定列排序

使用-k参数指定列排序,例如指定第8列时间进行排序

[root@test1 tmp]# ll -h |sort -k 8
total 99M
-rw-r–r--. 1 wuhs wuhs 125 Feb 19 10:01 2.log
-rw-r–r--. 1 root root 2.4K Feb 19 10:10 3.log
-rw-r–r--. 1 root root 183 Feb 19 10:25 4.log
-rw-r–r--. 1 root root 19 Feb 19 10:47 5.log
-rw-r–r--. 1 root root 425K Feb 9 13:46 s125.test1.sql
-rw-r–r--. 1 wuhs wuhs 0 Feb 19 14:04 1.log
-rw-r–r--. 1 root root 98M Feb 9 14:07 s125.test2.sql

4、排序后去重

使用-u参数去重

[root@test1 tmp]# cat 2.log
序号 企业名称 公网IP地址
1 国海证券 113.16.174.228
3 兴业证券 61.154.12.206
2 平安证券 211.157.16.114
3 兴业证券 61.154.12.206
[root@test1 tmp]# cat 2.log |sort -u
1 国海证券 113.16.174.228
2 平安证券 211.157.16.114
3 兴业证券 61.154.12.206
序号 企业名称 公网IP地址

5、按照文件大小进行排序

使用-h参数,按照人类习惯阅读方式比较文件大小

[root@test1 tmp]# cat 1.log1M200K1002G[root@test1 tmp]# cat 1.log |sort -h100200K1M2G

6、排序取反

使用-r参数取反,即改为降序排序

[root@test1 tmp]# cat 5.log
1 test 1
2 test2 2
[root@test1 tmp]# cat 5.log |sort -r
2 test2 2
1 test 1

7、自定义分隔符后指定列排序

使用-t参数自定义分隔符

[root@test1 tmp]# cat 4.log |sort -t “:” -k 5,使用:作为分隔符,以第5列的值排序在这里插入图片描述

8、将两个文件合同同时对合并后的内容排序

[root@test1 tmp]# sort 2.log 5.log > 6.log
[root@test1 tmp]# cat 6.log
1 test 1
1 国海证券 113.16.174.228
2 test2 2
2 平安证券 211.157.16.114
3 兴业证券 61.154.12.206
3 兴业证券 61.154.12.206
序号 企业名称 公网IP地址

三、参数说明

1、语法格式

  • sort [OPTION]… [FILE]…
  • sort [OPTION]… --files0-from=F

2、参数说明

参数说明
-b, --ignore-leading-blanks忽略前面空格。
-d, --dictionary-order根据字典顺序排序,仅比较数字 字母 空格等字符。
-f, --ignore-case忽略大小写。
-g, --general-numeric-sort按一般数值比较
-i, --ignore-nonprinting仅比较可打印字符。
-M, --month-sort月份
-h, --human-numeric-sort使用易读性数字(例如: 2K 1G)
-n, --numeric-sort纯数字排列
-R, --random-sort根据哈希值随机排序。
–random-source=FILE从文件中获取随机字节
-r, --reverse降序排序,默认为升序
–sort=WORD按单词排序:
-V, --version-sort按照文本中的自然编号排序
–batch-size=NMERGE使用临时文件一次最多合并n个合并输入
-c, --check, --check=diagnose-first检查已排序的输入;不排序
-C, --check=quiet, --check=silent与-c参数类似,但是不报告第一行错误
–compress-program=PROG用PROG压缩临时文件,用PROG-d解压临时文件
–debugdebug,用于排查错误用法
–files0-from=F从指定的文件读取输入,文件F中以NUL结尾的名称;
-k, --key=KEYDEF通过键排序;KEYDEF给出位置和类型
-m, --merge合并已排序的文件;不排序
-o, --output=FILE将结果写入文件而不是标准输出
-s, --stable通过禁用最后的比较来稳定排序
-S, --buffer-size=SIZE使用主内存缓冲区大小
-t, --field-separator=SEP使用SEP代替非空到空转换
-T, --temporary-directory=DIR多个选项指定多个目录将DIR用于临时变量,而不是$TMPDIR或/tmp
–parallel=N将同时运行的排序数更改为N
-u, --unique与-c一起,检查是否严格排序;如果没有-c,则只输出相等运行的第一个
-z, --zero-terminated如果没有-c,则只输出相等运行的第一个
–help查看帮助
–version获取版本信息
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐