linux 文件去重
在查日志的时候经常会遇到文件的去重,排序获得想要的结果,下面我们就来看看具体的案例:
文本行去重:测试文件 test.txt
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.
第一步:排序
由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。
$ sort test.txt
Apple and Nokia.
Apple and Nokia.
Hello World.
Hello World.
Hello World.
Hello World.
I wanna buy an Apple device.
My name is Friendfish.
The Iphone of Apple company.
The Iphone of Apple company.
第二步:去掉相邻的重复行
$ sort test.txt | uniq
Apple and Nokia.
Hello World.
I wanna buy an Apple device.
My name is Friendfish.
The Iphone of Apple company.
第三步:文本行去重并按重复次数排序
(1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计。)。
$ sort test.txt | uniq -c
2 Apple and Nokia.
4 Hello World.
1 I wanna buy an Apple device.
1 My name is Friendfish.
2 The Iphone of Apple company.
(2)对文本行按重复次数进行排序。
sort -n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort -rn)。
$ sort test.txt | uniq -c | sort -rn
4 Hello World.
2 The Iphone of Apple company.
2 Apple and Nokia.
1 My name is Friendfish.
(3)每行前面的删除重复次数。
cut命令可以按列操作文本行。可以看出前面的重复次数占8个字符,因此,可以用命令cut -c 9- 取出每行第9个及其以后的字符。
$ sort test.txt | uniq -c | sort -rn | cut -c 9-
Hello World.
The Iphone of Apple company.
Apple and Nokia.
My name is Friendfish.
I wanna buy an Apple device.
cut命令的使用,用法如下:cut -b list [-n] [file …]
cut -c list [file …]
cut -f list [-d delim][-s][file …]上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范围,-n常常表示具体数字;
file表示的自然是要操作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。范围的表示方法:
n 只有第n项
n- 从第n项一直到行尾
n-m 从第n项到第m项(包括m)
-m 从一行的开始到第m项(包括m)
- 从一行的开始到结束的所有项
补充两个文件的排序操作:
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
有这些就可以简单排序了,如有补充可以留言!
linux 文件去重相关推荐
- linux文件比对去重,linux文件去重工具findup, fslint-gui
shell脚本连接.读写.操作mysql数据库实例 本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入cs ...
- linux统计排序命令,Linux命令去重统计排序
利用Linux命令进行文本按行去重并按重复次数排序 linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去重并 ...
- SRE运维工程师笔记-Linux文件管理和IO重定向
SRE运维工程师笔记-Linux文件管理和IO重定向 1. 文件系统目录结构 1.1 文件系统的目录结构 1.2 常见的文件系统目录功能 1.3 应用程序的组成部分 1.4 CentOS 7 以后版本 ...
- linux文本去重分割,Linux命令去重统计排序
利用Linux命令进行文本按行去重并按重复次数排序 linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去重并 ...
- linux之去重uniq命令详解
linux之去重uniq命令详解 uniq是对文本文件进行行去去重的工具. 以行为单位,进行行与行之间的字符串比较并进行去重 只能对有序的文本行进行有效去重,所以常与sort命令结合使用 参数 解释 ...
- Linux文件中的stat结构
结构体stat Linux文件系统以块为单位存储信息,为了找到某一个文件所在的存储空间的位置用一个数据结构来对每个文件进行索引,而stat显示的就是该结构体信息,下面我们可以来看下这个结构体. str ...
- linux文件权限详解
linux文件权限详解 一.文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限: ...
- Linux中的文件寻址,Linux文件寻址算法:逻辑地址到物理地址的转换
题目描述: 编写一个函数实现Linux文件寻址的算法,即读取文件当前位置到物理存储位置的转换函数,需要给出运行的测试数据,可以假设和模拟需要的数据和结构.即编写一个函数unsigned long lt ...
- linux文件时间属性的详解
linux文件会有三个时间. stat file 可以查看三个时间 如: Access: 2019-01-26 19:11:10.482357682 +0800 Modify: 2019-01-26 ...
- 查看linux文件的权限:ls -l 文件名称
查看linux文件的权限:ls -l 文件名称 查看linux文件夹的权限:ls -ld 文件夹名称(所在目录) 修改文件及文件夹权限: sudo chmod -(代表类型)×××(所有者)×××(组 ...
最新文章
- 《Python从小白到大牛》第6章 数据类型
- python【蓝桥杯vip练习题库】BASIC-27 2n皇后问题(八皇后问题 搜索)
- [原]Oracle数据文件损坏的模拟和修复(一) |ORA-01578 data block corrupted|
- centos 显示50g硬盘但是 实际大小很小_天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍...
- 深度学习(1)深度学习初见
- jps、jinfo、jstat、jstack、jmap、jconsole等命令简介
- 软件工程概论课堂作业3
- jmeter生成html报告修改,Jmeter生成html报告(示例代码)
- [8] ADB 查看日志
- nginx开启支持websocket连接
- java发送163邮件
- ASCII码对照表(Python代码实现打印,python-docx库/xlwt库/fpdf库)
- CNI Proposal 摘要
- 倍福--电子凸轮的基本配置
- 一图抵千言《ARouter简明扼要原理分析》
- 【持续更新】2006-2023历代AMD 服务器Instinct桌面显卡列表,Instinct显卡发布日期
- c语言读取midi文件举例子,c# – 使用NAudio从MIDI文件中读取音符
- TIA Portal 功能实战(1):Get_Alarm:读取未决的报警
- js 中 java 代码_在js中嵌套java代码
- 软件界面设计规范培训