linux之sort命令

1 sort命令的参数

sort 参数(可以省略) file

具体参数如下

-b:忽略每行前面开始的空格字符,空格数量不固定时,该选项几乎是必须要使用的("-n"选项隐含该选项,测试发现都隐含)
-c:检查文件是否已经按照顺序排序,如未排序,会提示从哪一行开始乱序
-C:类似于"-c",只不过不输出任何诊断信息。可以通过退出状态码1判断出文件未排序
-d:只处理英文字母、数字及空格,忽略其他的字符
-f:将小写字母视为大写字母
-h:使用易读性数字(例如:2K、1G)
-i:除了040至176之间的ASCII字符外(八进制0-177),忽略其他的字符(忽略无法打印的字符如退格/换页键/回车)
-k:以哪个区间 (field) 来进行排序
-m:将几个排序好的文件进行合并,只是单纯合并,不做排序
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o<输出文件>:将排序后的结果存入指定的文件
-r:降序
-u:忽略相同行
-t<分隔字符>:指定分隔符,默认的分隔符为空白字符和非空白字符之间的空字符

2 sort命令常用参数使用

1) sort 我们不使用参数的情况,默认是以第一列的ASCII排序,如下。

cat t1.txt
dbc
abc
fbd
cbb
sort t1.txt
abc
cbb
dbc
fbd

 

2) -nr参数

我们不用ASCII排序,我们用数字大小进行排序,我们可以使用 -n 参数(默认升序),很明显这里的-n是number的意思

cat t2.txt
200
50
100
300
80
sort -n t2.txt
50
80
100
200
300

如果我们想按照数字的降序来,我们使用-r参数

sort -nr t2.txt
300
200
100
80
50

我的这篇博客里面会用到sort命令和-nr的联合使用

windows之如何知道C盘目录下的大文件路径

find . -type f -size +300M | xargs du -h | sort -nr

 

3) -t参数用来分割,-k参数来获取第几列

 比如我们数据如下

cat a.txt
chenyu:100
chengongyu:200
chenzixuan:130
chencaifeng:150
chenzixi:40

我们发现数据中间有:号隔开, 我们可以使用 -t ":" 分割,然后我么需要按照数字排序,那么我们可以通过-k来获取第几列,

-k 2,2 这里中间用逗号隔开,表示第二列开始,第二列结束,我们现在需要按照数字排序-k 2,2n 或者-k 2,2nr

sort -t ":" -k 2,2n a.txt

chenzixi:40
chenyu:100
chenzixuan:130
chencaifeng:150
chengongyu:200
sort -t ":" -k 2,2nr a.txt
chengongyu:200
chencaifeng:150
chenzixuan:130
chenyu:100
chenzixi:40

我们尽量保持这样的习惯,第几列开始,第几列结束,-k  2,2nr  不要写成 -k 2nr

 

3 sort命令去掉重复数据和uniq命令进行对比

1)用-u参数或略同行

cat b.txt
123
123
234
345
345
sort -u b.txt
123
234
345

 2)配合uniq命令,uniq对比的整个一行,如果数据有多列,我们需要在部分中间列去重,这里就不适用,这由于只有一列,可以

sort file | uniq
sort b.txt | uniq
123
234
345

如果数据如下,需要第二个数字200的去重,这了的uniq就不适用了

$ cat a.txt
chenyu:100
chengongyu:200
chenzixuan:130
chencaifeng:150
chenzixi:40
chenchen:200
sort -t ":" -k 2,2nr -u a.txt
chengongyu:200
chencaifeng:150
chenzixuan:130
chenyu:100
chenzixi:40

如果我们uniq加上-u和-d参数会是什么效果呢?这里的重复的行数是不连续的,比如数据123和123。

cat b.txt
123
234
345
345
123
sort b.txt | uniq -d
123
345

我们可以知道sort命令配合uniq -d命令 我们可以找到这个文件里面的重复数据。

sort b.txt | uniq -u
234

我们可以知道sort命令配合uniq -u命令 我们去掉这个文件里面的所有重复数据,不保留重复数据。

sort b.txt | uniq
123
234
345

我们可以知道sort命令配合uniq 不加参数命令,我们去掉这个文件里面的重复数据,指保留重复数据的一份。

4 总结

1)我们可以知道sort命令配合uniq -d命令 我们可以找到这个文件里面的重复数据。

2)我们可以知道sort命令配合uniq -u命令 我们去掉这个文件里面的所有重复数据,不保留重复数据。

3)我们可以知道sort命令配合uniq 不加参数命令,我们去掉这个文件里面的重复数据,指保留重复数据的一份。

4)看到排序和去重复或者找重复数据,我们需要想到sort命令和uniq命令。

发布了1043 篇原创文章 · 获赞 630 · 访问量 286万+

猜你喜欢

转载自blog.csdn.net/u011068702/article/details/102982461