linuxsort命令实用手册

编程

Linux 中的sort 命令是一个很实用的工具,用于对文本内容为单位进行ASCII 码排序,默认按照升序进行排序(当然也可以按照降序)。

sort 命令的格式如下:

sort `参数` `文件名`

这里不打算介绍其完整的使用方法,只介绍其重用方法,其完整手册可参看man sort

比如,我们有如下文本内容,可以看到其内容是无序的,其中有两行333bbb

>>> cat log.txt 

_______________

555

333

2222

666

333

bbb

CCC

aaa

ccc

bbb

1,基本使用

使用sort 命令,不加任何参数,对该文件进行排序,如下,可看到已按照ASCII 码 进行了排序:

>>> sort log.txt 

________________

2222

333

333

555

666

CCC

aaa

bbb

bbb

ccc

使用-f 参数可以忽略字符大小写进行排序,注意观察CCC 的位置:

>>> sort -f log.txt

___________________

2222

333

333

555

666

aaa

bbb

bbb

CCC

ccc

使用-r 参数可以进行反向排序:

>>> sort -r log.txt 

___________________

ccc

bbb

bbb

aaa

CCC

666

555

333

333

2222

使用-u 参数,可以对重复行进行去重,可以看到只剩下一行333bbb

>>> sort -u log.txt 

___________________

2222

333

555

666

CCC

aaa

bbb

ccc

使用-o 参数,可以将排序结果写到某个文件(也可以是原文件),如下,将文件内容输出到log.txt2

sort -u log.txt -o log.txt2

使用-n 参数,可以将排序结果按照数字大小进行排序,可以看到2222 排在了666 下面,这里只关心数字之间的次序就行(不需要关心字母数字的关系):

>>> sort -n log.txt

___________________

aaa

bbb

bbb

ccc

333

333

555

666

2222

2,进阶使用

sort 命令还可以对行内容,先进行分割,再按照某列进行排序,这时需要用到-t-k 参数。

-t 参数用于设置以什么字符为分隔符,-k 参数用于以分割后的哪一列进行排序,如果没有设置,默认会按照第一列进行排序。

比如,我们有如下内容,每行内容以逗号,分割,注意第4行只有一列ddd

>>> cat log2.txt 

________________

bbb,333

aaa,2222

ccc,66

ddd,

bbb,555

我们以逗号, 进行分割,并按照第一列进行排序,如下:

>>> sort -t , log2.txt 

______________________

aaa,2222

bbb,333

bbb,555

ccc,66

ddd,

按照第一列的第二个字符开始排序,如下1.2 表示从第一列的第二个字符开始排序:

>>> sort -t , -k 1.2 log2.txt

_____________________________

aaa,2222

bbb,333

bbb,555

ccc,66

ddd,

按照第二列,并以数字大小进行排序,如下:

>>> sort -t , -k 2 -n log2.txt 

——————————————————————————————

ddd,

ccc,66

bbb,333

bbb,555

aaa,2222

先按照第二列,再按照第一列进行排序,如下:

>>> sort -t , -k 2 -k 1  log2.txt 

_________________________________

ddd,

aaa,2222

bbb,333

bbb,555

ccc,66

下面总结一下以上讲到的参数及其含义:

参数

含义

-f

将小写字母视为大写字母,即忽略大小写

-r

反向排序

-u

去重

-o

输出到文件

-n

以数字大小进行排序

-t

设置分隔符

-k

设置按照第几列排序,与-t 参数配合使用

(完。)

以上是 linuxsort命令实用手册 的全部内容, 来源链接: utcz.com/z/515586.html

回到顶部