Linux文本排序,去重和统计
Linux下的文本处理主要包括以下几点:
1、文本排序
2、文本去重
3、文本统计
4、文本搜索
5、文本替换
本文学习文本排序、去重和统计。
一、文本排序
Shell中是利用sort命令对文本进行排序。
sort [option] filename
如果不加选项,sort会从第一个字母一次开始按照ASCII值比较。默认是按升序排序
文本search.txt: google 110 5000 baidu 100 5000 guge 50 3000 sohu 100 4500
命令:sort search.txt baidu 100 5000 google 110 5000 guge 50 3000 sohu 100 4500
2、-r 该选项是按照相反的顺序排序
命令:sort -r search.txt sohu 100 4500 guge 50 3000 google 110 5000 baidu 100 5000
3、-n 按照数值进行排序
100 5000 2 5000
sort -n search.txt
2 5000 100 5000
如果不用-n ,就会先按照ASCII值比较1和2,结果输出: 100 5000 2 5000
3、-k 在指定域开始进行排序
baidu 100 5000 google 110 5000 guge 50 3000 sohu 100 4500
我们想从第二列排序 命令: sort -k2.1n search.txt guge 50 3000 baidu 100 5000 sohu 100 4500 google 110 5000
4、-t 指定特定分隔符,区分列,一般与-k配合使用
如果不加这项,默认是按照空格划定的。 baidu:100: 5000 google :110 :5000 guge :50 :3000 sohu :100 :4500 命令:sort -t : -k2n search.txt
guge:50:3000 baidu:100:5000 sohu:100:4500 google:110:5000
5、 +n 按指定域进行分类,与 -k作用相同。
sort -t : +2n search.txt
6、-n 表示忽略掉某域。
sort -t : -k2n -2 search.txt 忽略掉第二列。
7、其他选项
1、-o 输出重定向,将结果重定向文件中,可以将源文件覆盖。 命令:sort -t : -k2n search.txt -o search.txt。 如果直接用sort -t : -k2n search.txt >search.txt。会将源文件清空。
2、-f 将小写转换为大写。 3、-b 忽略每一行前面的所有空白部分,从第一个可见字符开始比较。 4、-m 将两个已经排序好的文件进行合并,不会重新排序 5、-M 按照日期的前三个字母进行排序。
8、sort -u去除重复行,进行排序
这个放在最后主要是要和uniq进行比较,它主要是出去所有重复行。
二、文本去重
文本去重主要有两种方式:
1. uniq
2. sort -u
sort -u 在前面已经提到了,可以去除所有的重复行,然后进行排序。而uniq只能去重相邻的重复行,不相邻的不能去重。现在对uniq用法进行详解。
uniq :
- -d 只打印重复行;
- -u 只打印非重复行;
- -c 打印每一重复行出现的次数(意思是不重复的就打印一次)
- -f N忽略掉 前N个域;
如果不加选项,就直接取出相邻的重复行,注意这里只能去重相邻的重复行。
cat duplicate.txt
haibo ,please persisit and be patient whatever you may come across with. haibo ,please persisit and be patient whatever you may come across with. I love Python,and I'm confident on myself. haibo ,please persisit and be patient whatever you may come across with. I love Python,and I'm confident on myself. I love Python,and I'm confident on myself.
uniq duplicate.txt
haibo ,please persisit and be patient whatever you may come across with. I love Python,and I'm confident on myself. haibo ,please persisit and be patient whatever you may come across with. I love Python,and I'm confident on myself.
sort -u duplicate.txt
haibo ,please persisit and be patient whatever you may come across with. I love Python,and I'm confident on myself.
两者的区别清晰可见。
三、文本统计
文本统计主要应用wc命令,当然后续涉及到awk之类的,不过awk很久没用了,有点忘了,我会继续学习并记录。
wc:
- -l 显示文件中的行数 (包含空行);
- -c 统计字节数;
- -w 统计单词数;
- -m 统计字符数;
- -L 统计最大长度行的长度;
另外延伸两个命令:
1. head显示文件投 N行;
2. tail显示文件末尾N行;
如果不加参数,默认是10行。
接下来要学习文本搜索,文本替换。也就是shell命令的三大命令:grep,sed,awk。
微信分享/微信扫码阅读