5

linux sort 命令实用手册

 2 years ago
source link: https://codeshellme.github.io/2020/04/linux-sort/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

sort 命令的格式如下:

sort `参数` `文件名`

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

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

>>> cat log.txt
_______________

1,基本使用

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

>>> sort log.txt
________________

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

>>> sort -f log.txt
___________________

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

>>> sort -r log.txt
___________________

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

>>> sort -u log.txt
___________________

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

sort -u log.txt -o log.txt2

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

>>> sort -n log.txt
___________________

2,进阶使用

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

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

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

>>> cat log2.txt
________________
bbb,333
aaa,2222
ccc,66
bbb,555

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

>>> sort -t , log2.txt
______________________
aaa,2222
bbb,333
bbb,555
ccc,66

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

>>> sort -t , -k 1.2 log2.txt
_____________________________
aaa,2222
bbb,333
bbb,555
ccc,66

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

>>> sort -t , -k 2 -n log2.txt
——————————————————————————————
ccc,66
bbb,333
bbb,555
aaa,2222

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

>>> sort -t , -k 2 -k 1 log2.txt
_________________________________
aaa,2222
bbb,333
bbb,555
ccc,66

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

参数 含义
-f 将小写字母视为大写字母,即忽略大小写
-r 反向排序
-u 去重
-o 输出到文件
-n 以数字大小进行排序
-t 设置分隔符
-k 设置按照第几列排序,与-t 参数配合使用

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK