Linux基础篇,文本数据的比较与排序:sort、uniq、comm、diff
一、sort
sort命令用于将文本文件内容以行排序
sort [选项参数] [-o<输出文件>] [-t<分隔字符>] [+<起始栏位> -<结束栏位>] [文件]
-c ===> 检查文件是否已经按照顺序排序
-b ===> 忽略每行前面开始处的空格字符
-i ===> 排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-d ===> 排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f ===> 排序时,将小写字母视为大写字母
-M ===> 将前面3个字母依照月份的缩写进行排序
-n ===> 依照数值的大小排序
-g ===> 按通用数值排序,支持科学计数法
-r ===> 以相反的顺序来排序
-u ===> 对排序后的数据去重
-m ===> 将几个排序好的文件进行合并
-t ===> <分隔字符> 指定排序时所用的栏位分隔字符
-k ===> POS1[,POS2] (配合-t)排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序
+ ===> <起始栏位> -<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位(从0开始)
-o ===> <输出文件> 将排序后的结果存入指定的文件
1.sort [file]
后面直接跟文件名时,会以每一行的第一个字符进行排序,如果第一个字符相同则比第二个,以此类推
2.sort -n/g
根据数值进行排位
3.sort -n -t [分隔符] -k [排序参考栏目标号]
4.
du -h [目录] | sort -h
或
du -h /root/ | grep -v '^0' | sort -h
将某目录下的文件按文件大小排序
二、uniq
uniq用于重复数据处理,使用前数据必须完成排序(一般指sort排序)
uniq [选项参数] [输入文件] [输出文件]
-c ===> 在每列旁边显示该行重复出现的次数
-d ===> 只打印重复的行,重复的行只显示一次
-D ===> 只打印重复的行,重复的行出现多少次就显示多少次
-f ===> 忽略行首的几个字段
-i ===> 忽略大小写
-s ===> 忽略行首的几个字母
-u ===> 只打印唯一的行
-w ===> 比较不超过n个字母
-z ===> 使用'\0'作为行结束符,而不是新换行
1.uniq -c
统计某文本每行数据出现的次数
2.uniq -D
统计某文件重复行,并把重复行都显示出来
三、comm
对已存在有序文件进行比较:第一列只在文件1中出现的文件,第二列只在文件2中出现的文件,第三列在文件1和文件2中同事出现的文件
comm [-123] [第一个文件] [第二个文件]
-1 ===> 不显示在第1个文件中出现的列
-2 ===> 不显示在第2个文件中出现的列
-3 ===> 不显示只在第1或第2个文件中出现的列
两个文件中重复出现的行
四、diff
1.参数说明
diff [选项] [文件1或目录1] [文件2或目录2] (四种组合方式)
diff [-abBcdefHilnNpPqrstTuvwy] [-<行数>] [-C <行数>] [-D <巨集名称>] [-I <字符或字符串>] [-S <文件>] [-W <宽度>] [-x <文件或目录>] [-X <文件>] [--left-column] [--suppress-common-line] [文件或目录1] [文件或目录2]
注意:
=====================================================================================
1.diff命令一般比较两个文件的不同,如果使用”-”代替文件参数,则要比较的内容将来自标准输入
2.diff命令是以逐行的方式比较文本文件的异同
3.如果指定比较的是目录的时候,diff命令会比较两个目录下名字相同的文本文件,但不会比较其中子目录
=====================================================================================
-a ===> diff预设只会逐行比较文本文件。
-b ===> 不检查空格字符的不同。
-B ===> 不检查空白行
-c ===> 显示全部内文,并标出不同之处
-d ===> 使用不同的演算法,以较小的单位来做比较
-e ===> 此参数的输出格式可用于ed的script文件
-f ===> 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处
-H ===> 比较大文件时,可加快速度
-i ===> 不检查大小写的不同。
-l ===> 将结果交由pr程序来分页
-n ===> 将比较结果以RCS的格式来显示
-p ===> 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称
-N ===> 在比较目录时,若文件A仅出现在某个目录中,预设会显示
-P ===> 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较
-q ===> 仅显示有无差异,不显示详细的信息
-r ===> 比较子目录中的文件
-s ===> 若没有发现任何差异,仍然显示信息
-t ===> 在输出时,将tab字符展开
-T ===> 在每行前面加上tab字符以便对齐
-w ===> 忽略全部的空格字符。
-y ===> 以并列的方式显示文件的异同之处。
–left-column ===> 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容
–suppress-common-lines ===> 在使用-y参数时,仅显示不同之处
-<行数> ===> 指定要显示多少行的文本(此参数必须与-c或-u参数一并使用)
-C<行数> ===> 与执行”-c-<行数>”指令相同
-W<宽度> ===> 在使用-y参数时,指定栏宽
-u(U)<列数> ===> 以合并的方式来显示文件内容的不同
-D<巨集名称> ===> 此参数的输出格式可用于前置处理器巨集
-S<文件> ===> 在比较目录时,从指定的文件开始比较
-X<文件> ===> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件
-X<文件> ===> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件
-x<文件名或目录> ===> 不比较选项中所指定的文件或目录
-x<文件名或目录> ===> 不比较选项中所指定的文件或目录
-l<字符或字符串> ===> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异
2.结果说明
diff的输出结果表明需要对一个文件做怎样的操作之后才能与第二个文件相匹配
| ===> 表示前后2个文件内容有不同
< ===> 表示后面文件比前面文件少了1行内容
> ===> 表示后面文件比前面文件多了1行内容
a ===> add
c ===> change
d ===> delete
例如:
从图中可以看出
3,4c3,4
这句输出的意思就是第一个文件的第三四行需要进行改变(c=change)操作才能与第二个文件的三四行数据相同
Linux基础篇,文本数据的比较与排序:sort、uniq、comm、diff的更多相关文章
- Linux随笔-鸟哥Linux基础篇学习总结(全)
Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...
- 第一天 Linux基础篇
课程介绍 1.认识Linux的不同版本 2.以及应用领域 3.文件和目录 4.Linux命令概述 5.Linux命令-文件 6.Linux命令-系统管理-磁盘管理 认识Linux 什么是操作系统 生 ...
- Linux基础篇–shell脚本编程基础
本章内容概要 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 7.1 编程基础程序:指令+数据程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心 ...
- Linux基础_7_文本显示
注:实质是针对标准输出文本的各种骚操作! 简单查看 注:初略加工后进行显示. cat -n 文件名 #查看文件内容并显示行号 tac 文件名 #逆序查看 more 文件名 less 文件名 #按?搜索 ...
- Linux基础命令---文本格式转换fmt
fmt 将指定文件的内容,按照指定的格式重新排版,结果送到标准输出. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ...
- Linux基础命令---文本显示od
od 将指定文件的内容以八进制.十进制.十六进制等编码方式显示.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ...
- linux基础5-vi文本处理器
三种模式下各自可以完成的操作: 一般模式:可以完成光标移动.删除单个和整行字.复制和黏贴,通过i.o.a.r这几个命令进入编辑模式 编辑模式:可以输入字符,通过esc返回一般模式 指令模式:读取文件, ...
- Linux基础篇四:常用命令
. 一个点表示是 当前目录 .. 两个点表示当前目录的上一层目录 . 与 .. 相对路径的一种表现形式 cd ~/test/ ~当前用户的家目录 绝对路径 注意: ...
- Linux 基础篇(二)
1.linux 关机和重启 关机: shutdown -h 10:20 # 指定时间关机 shutdown -h now # 马上关机 shutdown -h +10 # 10分钟后关机 ...
随机推荐
- nginx升级不改变配置文件
查看当前版本是:1.10.3 [root@proxy nginx-1.10.3]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.10.3b ...
- 机器学习 - LSTM应用之情感分析
1. 概述 在情感分析的应用领域,例如判断某一句话是positive或者是negative的案例中,咱们可以通过传统的standard neuro network来作为解决方案,但是传统的神经网络在应 ...
- 机器学习实战 [Machine learning in action]
内容简介 机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存.谋发展的决定性手段,这使得这一过去为分析师和数学家所专属 ...
- Fiddler5 发送HTTP请求
1.Fiddler Composer发送HTTP请求 Composer的编辑模式主要有2种:Parsed模式和Raw模式. 实例1:Composer发送get请求 实例2:Composer发送post ...
- 深夜,我用python爬取了整个斗图网站,不服来斗
QQ.微信斗图总是斗不过,索性直接来爬斗图网,我有整个网站的图,不服来斗. 废话不多说,选取的网站为斗图啦,我们先简单来看一下网站的结构 网页信息 从上面这张图我们可以看出,一页有多套图,这个时候我们 ...
- 推荐一款优秀的web自动化测工具
在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpat ...
- effective-java学习笔记---注解优于命名模式39
命名模式的缺点有以下三点:(在第 4 版之前,JUnit 测试框架要求其用户通过以 test[Beck04] 开始名称来指定测试方法) 1.拼写错误导致失败,但不会提示. 2.无法确保它们仅用于适当的 ...
- 给rm命令加保险
众所周知,脑残可以学习,但是手残没法治.相信每一位喜欢用终端操作电脑的同学都曾手误使用 rm 命令把不该删除的文件删了.然而,使用 rm 删除的文件是不会进去回收站的. 所以,最好的方法就是我们自定义 ...
- # Unity 游戏框架搭建 2019 (十六、十七) localPosition 简化与Transform 重置
在上一篇我们收集了一个 屏幕分辨率检测的一个小工具.今天呢再往下接着探索. 问题 我们今天在接着探索.不管是写 UI 还是写 GamePlay,多多少少都需要操作 Transform. 而在笔者刚接触 ...
- OpenCV-Python 霍夫圈变换 | 三十三
学习目标 在本章中, 我们将学习使用霍夫变换来查找图像中的圆. 我们将看到以下函数:cv.HoughCircles() 理论 圆在数学上表示为(x−xcenter)2(y−ycenter)2=r2(x ...