在linux中的sort命令,linux下sort命令的使用方法讲解

Linux下的sort命令默认将文件中的每一行为单位,进行排序,然后输出。具体地,就是从每行的第一个字符开始,依次按ASCII码值进行比较,最后将结果按升序排序输出。

语法:

sort [option] [file(s) ]

用途:将输入行按照键值字段与数据类型选项以及locale 排序

主要选项:

-b 忽略开头的空白

-c 检查输入是否已正确排序,如输入未经排序,但退出码(exit code)为非零值,则不会有任何输出

-d 字典顺序:仅文字数字与空白才有意义

-g 一般数值:以浮点数字类型比较字段。这个选项的运作有点类似 -n.差别仅在于这个选项的数字可能有小数点及指数。(仅GNU版本提供此功能)

-f 以不管字母大小写的方式排序

-i 忽略无法打印的字符

-k 定义排序键值字段(该选项后接一个字段编号,或则是一对数字。有时-k之后可用空白分隔。每个编号后都可以接一个点号的字符位置,及/ 或 修饰符(modifier)字母之一

.且当出现多个-k选项时候,会先从第一个键值开始排序,找出匹配该键值的记录后,再进行第二个键值字段的排序,以此类推。)

-m 将以排除的输入文件,合并为一个排序后的输出数据流。

-n 以整数类型比较字段

-o outfile 将输入写到指定文件,而非标准输出。如果该文件为输入文件之一,则sort 在进行配需与写到输入文件之前,会先将它复制到一个临时文件

-r 倒置排序的顺序为 由大至小(descending),而非默认的由小至大(ascending)

-t char 使用单个字符char作为默认的字段分割字符,取代默认的空白字符。

-u 只有唯一的记录,丢弃所有具有相同键值的记录,只留其中的第一条。只有键值字段是重要的,也就是说:被丢弃的记录其他部分可能是不同值。

行为模式:

sort 会读取制定的文件,如果未给定文件,则读取标准输入,在将排序好的数据写至标准输出。

实例一:

(1)-k2.4,5.6 指的是从第二个字段的第4个字符开始比较,一直比到第五个字段的第六个字符。

(2) sort -t: -k1,1 /etc/passwd 以冒号隔开的第一个字段:用户名称 对 /etc/passwd进行排序

(3)sort -t: -k3nr /etc/passwd 以冒号隔开的第3个字段 uid 反向(由大到小)排序

(4)sort -t: -k4n -k3n /etc/passwd 以冒号隔开的第4个字段GID,以及第3个字段uid排序

(5)sort -t: -k4n -u /etc/passwd 以冒号隔开的第4个字段GID排序,且只输入唯一的GID

实例二: 文本快排序

有时,我们需要对多行记录的组合而成的数据排序。如 地址清单。为了方便记录,地址记录经常会切断,以一个或数个空行将彼此隔开。像这种数据没有一定的排序键值位置可供-k 选项使用,所以我们得自救,提供一些额外标记(markup)给这些数据。

cat my-friends

#SORTKEY:Schlo,Hans Jurgen

Hans Jurgen Schlo

Unter den Linden 78

D-10117 Berlin

Germany

#SORTKEY:Jones,Adrian

Adrian Jones

371 Montgomery Park Road

Henley-on-Thames RG9 4AJ

UK

#SORTKEY:Brown ,Kim

Kim Brown

1841 S Main Street

1841 S Main Street

Westchester ,NY 10502

USA

cat my-friends |

awk -v RS="" '{ gsub("\n" ,"^z"); print }' |

sort -f |

awk -v ORS="\n\n" '{ gsub("^z","\n"); print }'|

grep -v '# SORTKEY'

函数gsub() 功能为全局性替换,类似 sed 下的 s/x/y/g 架构。 RS 变量是输入数据的记录分割器。 RS=“” 是一个特殊用法,指的是记录以空行的方式隔开。例如每个块或文本段落自成一个记录。最后,ORS指的是输出记录分割器,以print显示的每条输出记录会以其值作为终止。

实例三:删除重复

有时,将数据流连续重复的记录删除是有必要的。虽然sort -u 可以显示唯一值,但他的消除操作是一句匹配的键值,而非匹配的记录。uniq命令提供另一种过滤数据的方式:常用于管道,用来删除已用sort排序完成的重复记录。

sort ...|uniq|...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值