linux sort命令 倒序,Linux 之 sort 命令

简介

sort 是用来排序的,Unix Shell 的传统是对问本行做处理,因此 sort 也是对文本行进行排序,如果需要排序字段,则可以通过指定 -k,-t 等选项来实现。

用法

sort [options]... [file]...

默认排序规则:

数字开头的行会排在字母开头行之前

字母序排序(不分大小写)

小写字母会排在相同的大写字母之前

Options

Flag

描述

-r, --reverse

倒序

-o, --output=FILE

排序结果输出到文件中

-u, --unique

对相同的行进行过滤

-b, --ignore-leading-blanks

忽略首部空格

-d, --directory-order

只考虑空格,字母与数字

-f, --ignore-case

忽略大小写(F means fold)(Fold lower case to upper case characters.)

-i, --ignore-nonprinting

忽略不可打印字母,仅根据可打印字母排序

-n, --numeric-sort

转换为数字排序

-m, --merge

合并已排好序的文件

-t, --field-separator=SEP

使用SEP 而非空格将行切分成字段,与 -k 一起使用

-k, --key=POS1[,POS2]

使排序使用的key 从 POS1(默认1) 开始,POS2(默认行尾) 结束(POS 格式见下)

-R, --random-sort

使用随机哈希排序

-c, --check

只检查文件是否已排序

--help

打印帮助

--version

打印版本

POS 的形式为 F[.C][OPTS], F 是字段序号,C 是字段中字符的位置,默认都为1, 如果没有指定 -t 与 -b ,默认从行首算起。 OPTS 指定字段排序形式,可覆盖外面的排序选项(r,n)

例子

字母序排序文件

sort data

将排序结果保存到单独文件中

sort data > output 或 sort -o output data

倒序排序

sort -r data

检查文件是否已排序

sort -c data

根据字段进行排序

我们有如下文件 data

1 Alfred

2 Jay

3 Dave

4 Bernad

如果我们直接使用 sort data, 输出不会有任何变化,因为行首是已经排序好的,我们想对人名进行排序,此时就可以使用 -k 选项来指定 sort -k 2 data, 它的输出就变成了

1 Alfred

4 Bernad

3 Dave

2 Jay

指定起始的字段排序

我们有如下data 文件

01 Joe Sr.Designer

02 Marie Jr.Developer

03 Albert Jr.Designer

04 Dave Sr.Developer

我们如果要对职业进行排序可以使用 sort -k 3 data, 但是职业分了等级,我们想将相同职业类型的人放在一起,此时就可以使用 F.C 格式来指定排序字段从第 C 个字母开始排序,忽略前面的字母, sort -k 3.3 data, 如果需要倒序排序可以指定OPTS, sort -k 3.3r data

也可以指定比较的 key 的范围, 上面例子中我们只想比较第三个到第五个字母 sort -k 3.3,3.5 data, 也可以跨字段 sort -k 2.2,3.3 data

多个字段排序

sort -t: -k 2,2n -k 4,4nr data

以冒号分割字段,首先以数字形式比较第2列,如果相同再以数字形式倒序排序第4个字段

删除重复行

sort -u data 与 sort data | uniq 在整行时行为是一致的,不过如果我们使用了 -k 排序字段时, 两者的行为就不一致了, sort 的 -u 比较的是排序的key。

对data 进行sort -k 3.3 -u data 排序

data 数据

01 Joe Sr.Designer

02 Marie Jr.Developer

03 Albert Jr.Designer

04 Dave Sr.Developer

输出结果

01 Joe Sr.Designer

02 Marie Jr.Developer

排序多个文件

sort data1 data2

删除重复 sort -u data1 data2

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sort命令Linux系统中用来对文本文件进行排序的命令。它可以对文件中的行进行字典序排序,也可以按照数字大小进行排序。 常用语法格式: sort [选项] [文件] 常用选项: -n : 按数值大小排序 -r : 逆序排序 -t : 指定分隔符 -k : 指定排序字段 例如:sort -nr -k 2 data.txt 表示按照data.txt文件第二列的数字进行逆序排序。 请注意,默认情况下,sort命令将忽略空行和注释行。 ### 回答2: sort命令Linux中的一个文本排序工具,用于对文本文件或者标准输入进行排序并将结果输出。 sort命令的基本用法是sort [选项] [文件],其中选项包括: - -b:忽略每行开头的空格符; - -f:忽略字母大小写的区别; - -n:以数值大小进行排序; - -r:以逆序排序,即降序排序; - -t:指定字段分隔符,默认为空格符; - -k:指定排序的字段范围,可以是单个字段或多个字段; - -u:去除重复的行。 sort命令默认按照字典序进行排序,即按照ASCII码值来比较字符。可以使用-n选项来指定按照数值大小排序,这在对数字类型的数据进行排序时非常有用。同时,使用-f选项可以忽略字母的大小写,例如对于字符串"a"和"A",默认情况下"a"排在"A"之后,但使用-f选项后,它们会被视为相等。 sort命令可以通过-t选项来指定字段的分隔符,默认是空格符。另外,使用-k选项可以指定排序的字段范围,可以是单个字段或者多个字段。例如,使用-k2,2表示按照第二个字段进行排序,使用-k2,3表示按照第二个和第三个字段的组合进行排序。 使用sort命令还可以去除重复的行,通过-u选项来实现。这在处理大量数据时特别有用,可以快速去除重复的数据行。 总之,sort命令Linux中非常实用的文本排序工具,通过各种选项的组合,可以实现根据不同需求对文本进行排序。 ### 回答3: sort命令Linux操作系统中的一个文本处理工具,用于对文本文件进行排序。其基本语法为"sort [选项] [文件]"。sort命令可以按照字母、数字、空格、制表符等字符来对文本进行排序。 sort命令常用的选项有: -n:按照数值大小对文本进行排序; -r:倒序排列; -k n:以第n个字段作为排序的依据; -t 字符:以指定的字符作为字段的分隔符; -u:去除重复的行; -f:忽略大小写; -o 文件:将结果输出到指定的文件中。 sort命令的工作原理是将文本文件按行读入内存,然后根据指定的排序规则进行排序,并输出排序后的结果。如果没有指定文件,则默认从标准输入中读取数据。同时,sort命令也支持对包含多个文件的目录进行排序。 除了对文本文件进行排序之外,sort命令还可以用于排序其他格式的文件,如CSV文件。可以通过设置适当的分隔符和字段来实现按列排序。 sort命令在实际的应用中非常常见,例如可以用来对日志文件按时间进行排序,对数据文件按列进行排序,对文本文件按字母顺序进行排序等等。其强大的排序功能使得在各种文本处理场景中都可以使用。 总之,sort命令Linux操作系统中一个非常实用和常用的文本处理工具,具有强大的排序功能。通过掌握sort命令的不同选项和参数的使用,可以灵活进行各种排序操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值