linux sort 命令实用手册
2020-04-17 本文已影响0人
码农充电站pro
Linux 中的sort
命令是一个很实用的工具,用于对文本内容
以行
为单位进行ASCII 码
排序,默认按照升序
进行排序(当然也可以按照降序
)。
sort
命令的格式如下:
linux sort 命令实用手册sort 参数
文件名
这里不打算介绍其完整的使用方法,只介绍其重用方法,其完整手册可参看man sort
。
比如,我们有如下文本内容
,可以看到其内容是无序的,其中有两行333
和bbb
:
>>> 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
参数,可以对重复行
进行去重
,可以看到只剩下一行333
和bbb
:
>>> 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 参数配合使用 |
(完。)