利用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命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。

排序前:

排序后:

(2)去掉相邻的重复行

如图所示:

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

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

如图所示:

(2)按重复次数排序

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

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

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

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

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

grep -v '^$' file

效果如下所示:

Linux命令去重统计排序的更多相关文章

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

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

  2. Linux命令总结_sort排序命令

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

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

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

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

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

  5. Linux sort 排序 去重 统计

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

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

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

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

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

  8. Linux 文本去重 之 命令sort 与 uniq

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

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

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

随机推荐

  1. Linux基础命令---ifcfg

    ifcfg ifcfg是一个简单的脚本替换iconfig命令,它可以设置网络接口的ip地址. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedo ...

  2. django -- 修改admin 密码问题

    1.python manage.py shell 2.from django.contrib.auth.models import User 3.user=User.objects.get(usern ...

  3. python sqlite3 数据库操作

    python sqlite3 数据库操作 SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 ...

  4. 使用Holer外网SSH访问内网(局域网)Linux系统

    1. Holer工具简介 Holer exposes local servers behind NATs and firewalls to the public internet over secur ...

  5. CXF+Spring+Hibernate实现RESTful webservice服务端实例

    1.RESTful API接口定义 /* * Copyright 2016-2017 WitPool.org All Rights Reserved. * * You may not use this ...

  6. AirTest源码分析之运行器

    from: https://blog.csdn.net/u012897401/article/details/82900562 使用:根据airtest文档说明,可以通过命令行来启动air脚本,需要传 ...

  7. django 函数装饰器 变为 类装饰器

    aaa  

  8. No module named scrapy 成功安装scrapy,却无法import的解决方法

    今天本来准备写一个Python的爬虫,然而使用pip安装了Scrapy之后,却无论如何也无法import,显示的结果总是ImportError: No module named Scrapy.网上查阅 ...

  9. PXC备份方式总结

    记录一下. 1.mysqldump数据导出 关于GTID: GTID是MySQL5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. A global t ...

  10. Golang原生sql操作Mysql数据库增删改查

    Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...