linux sort 命令实用手册
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.
Linux 中的sort
命令是一个很实用的工具,用于对文本内容
以行
为单位进行ASCII 码
排序,默认按照升序
进行排序(当然也可以按照降序
)。
sort
命令的格式如下:
sort `参数` `文件名` |
这里不打算介绍其完整的使用方法,只介绍其重用方法,其完整手册可参看man sort
。
比如,我们有如下文本内容
,可以看到其内容是无序的,其中有两行333
和bbb
:
>>> cat log.txt _______________ |
1,基本使用
使用sort
命令,不加任何参数,对该文件进行排序,如下,可看到已按照ASCII 码
进行了排序:
>>> sort log.txt ________________ |
使用-f
参数可以忽略字符大小写进行排序,注意观察CCC
的位置:
>>> sort -f log.txt ___________________ |
使用-r
参数可以进行反向排序:
>>> sort -r log.txt ___________________ |
使用-u
参数,可以对重复行
进行去重
,可以看到只剩下一行333
和bbb
:
>>> 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 参数配合使用 |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK