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 ----------------------------------------- ...

随机推荐

使用Aspose.Cells读取Excel

最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...

《python核心编程》笔记——文件的创建、读取和显示

创建文件(makeTextFile.py)脚本提醒用户输入一个尚不存在的文件名,然后由用户输入文件每一行,最后将所有文本写入文本文件 #!/usr/bin/env python 'makeTextFi ...

StructureMap使用方法(转)

终于到了题目中的MVC使用StructureMap依赖注入的配置与实现了.在ASP.Net三层架构应用中StructureMap的是最老的IOC/DI工具,也就是依赖注入,很多线上的项目都使用了Str ...

css笔记04:属性选择器

1.属性选择器: 带有 title 属性的所有元素设置样式: /p>

oracle 格式化数字 to_char

转:http://blog.csdn.net/chinarenzhou/article/details/5748965 Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,i ...

sharepoint 2010 使用自定义列表模版创建列表(1)

我们在使用sharepoint的过程中,发现一个比较好用的功能,就是“将此列表另存为模版”(save list as template),这个功能的作用是,创建一个和当前列表或者文档库一模一样的配置, ...

POJ训练计划3080_Blue Jeans(串处理/暴力)

Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11542   Accepted: 4962 Descr ...

python应用-爬取猫眼电影top100

import requests import re import json import time from requests.exceptions import RequestException d ...

最长增长子序列(LIS)

给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4. 说 ...

linux 删除开头是减号的文件名

若有一个文件的文件名为 : -testfile 删除方法为 : 输入“rm — -testfile”或”rm ./-testfile”命令便可顺利删除名为“-testfile”的文件. 如果是其他特殊 ...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值