linux文本去重分割,Linux命令去重统计排序

利用Linux命令进行文本按行去重并按重复次数排序

linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能。本文这里举例说明如何利用Linux命令行进行文本按行去重并按重复次数排序。主要用到的命令有sort,uniq。其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重。

用于演示的测试文件内容如下:

Hello World.

Apple and Nokia.

Hello World.

I wanna buy an Apple device.

The Iphone of Apple company.

Hello World.

The Iphone of Apple company.

My name is Friendfish.

Hello World.

Apple and Nokia.

1、文本去重

(1)排序

由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。

排序前:

01ed7ff493f8b15f0d261bfad08a60ba.png

排序后:

c6bae2e6af88fefdfc888e3f8d2d4349.png

(2)去掉相邻的重复行

如图所示:

42a222652ac88da7aca443085a50f9b7.png

2、文本行去重并按重复次数排序

(1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计)

如图所示:

5f8ac62e0fcb16a76673bab42d9c308f.png

(2)按重复次数排序

sort -n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort -rn)

bd958f819b065d108acbd32d3236a100.png

-------------------------------------------------------手动分割---------------------------------------------------------

2018/09/04

做数据统计的时候遇见一个问题,对一个包含地区名的地区文件做处理的时候(cat diqu.log | sort | uniq -c),发现相邻的地区名

并没有去重,反复试了好几次也没有解决

注意:uniq 命令读取文本文件或者标准输入,并比较相邻的行。正常情况下,相邻的重复行将被删去

最后查了一下,怀疑应该是编码的问题,最后找到了解决方案:

修改系统配置

vi /etc/sysconfig/i18n

#把原配置

LANG="en_US.UTF-8"

#修改为

LANG="zh_CN.GB18030"

做以上修改就能解决问题

-------------------------------------------------------手动分割---------------------------------------------------------

2019/09/18

对于一些文件,我们在去重排序后会有空行存在的问题,比如:

30f6530c2b1b8d57a55c6c5c95875e64.png

可以看到去重之后的文件是存在空行,可以执行如下命令去除空行:

grep -v '^$' file

效果如下所示:

954c66571ecdf987bc4050ef6cde9a8b.png

Linux 命令 - sort: 行排序文本文件

命令格式 sort [OPTION]... [FILE]... 命令参数 -b, --ignore-leading-blanks 忽略开头的空白字符. -d, --dictionary-order 只 ...

Linux命令总结_sort排序命令

1.sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件]       补充说明:sort可针对文本文件的内容,以行为单位 ...

Linux 命令 - wc: 统计文件的行数、字数和字节数

命令格式 wc [OPTION]... [FILE]... 命令格式 -c, --bytes 打印字节数. -m, --chars 打印字符数. -l, --lines 打印行数. -L, --max ...

利用Linux命令行进行文本按行去重并按重复次数排序

最近杂事太多,正事进展缓慢.Fighting! linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去重并按重 ...

Linux sort 排序 去重 统计

先写一个命令: cut -d' ' -f1 ~/.bash_history|sort -d | uniq -c|sort -nr|head 这个命令可以统计你历史上输入的命令的次数的前十条 整个命令基 ...

转载:Linux命令经典面试题:统计文件中出现次数最多的前10个单词

1.使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词 主要考察对sort.uniq命令的使用,相关解释 ...

《sort帮你排序》-linux命令五分钟系列之二十六

本原创文章属于博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

Linux 文本去重 之 命令sort 与 uniq

sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序 ...

Linux命令输出头(标题)、输出结果排序技巧

原文:http://blog.csdn.net/hongweigg/article/details/65446007 ----------------------------------------- ...

随机推荐

Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds问题

错误:Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requi ...

mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap【转】

由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/14535 ...

Android Activity 生命周期详解

学习android开发这么久对于activity的生命周期还没有仔细思考过,所以,我大致的把这些东西整理一下,希望通过这使自己理解的更透彻点吧! 首先看一下Activity生命周期图和它的的四个阶段 ...

js学习--DOM操作详解大全一(浏览器对象)

一.客户端中的window对象 window对象表示当前浏览器的窗口,它是一个顶级对象,我们创建的所有对象.函数.变量都是window对象的成员. window对象自带了一些非常有用的方法.属性. w ...

ASP.NET MVC 与Form表单交互

一,Form包含文件类(单选文件)