【Linux】sort排序、uniq去重、wc统计
文章目录一、sort 排序1、语法2、参数说明3、实例二、uniq 去重1、uniq使用2、sort和uniq去重结果对比三、wc 统计一、sort 排序sort命令用于 对文本文件内容,以行为单位来排序。sort命令以空格作为字段分隔符,将一行分割为多个关键字对文件进行排序。需要注意的是除非你将输出重定向到文件中,否则sort命令并不对文件内容进行实际的排序(即文件内容没有修改),只是...
一、sort 排序
- sort命令用于 对文本文件内容,以行为单位来排序。
- sort命令以空格作为字段分隔符,将一行分割为多个关键字对文件进行排序。
- 需要注意的是除非你将输出重定向到文件中,否则sort命令并不对文件内容进行实际的排序(即文件内容没有修改),只是将文件内容按有序输出。
1、语法
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
2、参数说明
参数 | 说明 |
---|---|
-m | 将几个排序好的文件进行合并。 |
-u | 内容去重 |
-n | 依照数值的大小排序,升序排列。 |
-o<输出文件> | 将排序后的结果存入指定的文件。 |
-r | 以相反的顺序来排序。 |
-t<分隔字符> | 指定排序时所用的栏位分隔字符。 |
-k<指定排序的列数> | 指定要排序的列数,默认是从第一列开始比较,-k可指定某一列,也可与-t 结合使用时,代表某一栏 |
+<起始栏位>-<结束栏位> | 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |
3、实例
(1)对文件进行升序排序
sort testfile
以行为单位,相互比较,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
注意:原文件内容并未被修改!
(2)对文件进行升序排序,并去除重复行 sort -u
sort -u 1.txt
可以看出:
-
sort -u是先对内容进行排序,然后再去重(实际也是去除了相邻的重复行)。
-
而uniq不能实现排序,只能去除相邻的重复行,所以要跟sort合并使用,先用sort排序,再用uniq去重
sort 1.txt | uniq:
(3)按数值大小降序排列后,把结果再输出到原文件中 -o(直接用重定向做不到)
sort -nr num.txt -o num.txt
(4)使用sort的-t选项和-k选项,设置间隔符后再指定排序的列
如上图所示,对年月日的日期进行排序,直接使用sort dat.txt时,会按列从左到右来排序;
sort -t'-' -k2 dat.txt
# 其中-t'-' 是以 ‘-’ 为分隔符对每行内容分栏,然后-k 2 表示对分栏后的第二栏内容进行默认的升序排列。
(5)使用sort -k指定以某一列排序
sort -k9 a.txt
(基于a.txt的第九列来排序)
(6)sort命令并非仅能对文件进行排序,我们还可以通过管道将命令的输出内容重定向到sort命令中
ls -l /home/$USER | sort -nk5
(7)对/etc/passwd以‘:’分隔,再以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序。
cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
二、uniq 去重
1、uniq使用
- uniq命令用于去重文件内容中的连续重复行,通常要跟sort一起使用,先利用sort排序,然后用uniq去重。
- uniq命令与sort命令类似,并不对文件内容进行实际的排序(即文件内容没有修改),只是在输出内容中去重。
- uniq -c :显示每一行重复的次数
2、sort和uniq去重结果对比
1、sort -u
使用sort对文件去重
sort -u 1.txt
可以看出,sort -u是先对内容进行排序,然后再去重(实际也是去除了相邻的重复行)。
2、使用uniq对文件去重
可以看出,当内容中的重复行不相邻时,直接使用uniq 1.txt 并不能达到去重。
因为uniq只能去除相邻的重复行,所以要跟sort合并使用,先用sort排序,再用uniq去重sort 1.txt | uniq
。
三、wc 统计
wc命令用于统计文件里面有多少行,多少单词,多少字符。
常与sort、grep等其它命令结合使用。
参数 | 说明 |
---|---|
-l | line,统计行数; |
-w | word,统计单词数(英文单词),以空格或换行为单位; |
-m | 统计字符数; |
wc 1.txt
默认显示所有的行数、单词数、字符数。
如下图所示:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)