相信在Linux下对文件操作经常会用到sort和uniq命令,下面系统的介绍一下这两个命令的用法。

  sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

  语法

  sort(选项)(参数)

  选项

  -b:忽略每行前面开始出的空格字符;   

  -c:检查文件是否已经按照顺序排序;   

  -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;   

  -f:排序时,将小写字母视为大写字母;   

  -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;   

  -m:将几个排序号的文件进行合并;   

  -M:将前面3个字母依照月份的缩写进行排序;   

  -n:依照数值的大小排序;   

  -o<输出文件>:将排序后的结果存入制定的文件;   

  -r:以相反的顺序来排序;   

  -t<分隔字符>:指定排序时所用的栏位分隔字符;   

  +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

  参数

  文件:指定待排序的文件列表。

  实例

  sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

  [root@mail text]# cat sort.txt   

  aaa:10:1.1   

  ccc:30:3.3   

  ddd:40:4.4   

  bbb:20:2.2   

  eee:50:5.5   

  eee:50:5.5   

  [root@mail text]# sort sort.txt   

  aaa:10:1.1   

  bbb:20:2.2   

  ccc:30:3.3   

  ddd:40:4.4   

  eee:50:5.5   

  eee:50:5.5

  忽略相同行使用-u选项或者uniq:

  [root@mail text]# cat sort.txt   

  aaa:10:1.1   

  ccc:30:3.3   

  ddd:40:4.4   

  bbb:20:2.2   

  eee:50:5.5   

  eee:50:5.5   

  [root@mail text]# sort -u sort.txt   

  aaa:10:1.1   

  bbb:20:2.2   

  ccc:30:3.3   

  ddd:40:4.4   

  eee:50:5.5   

  或者   

  [root@mail text]# uniq sort.txt   

  aaa:10:1.1   

  ccc:30:3.3   

  ddd:40:4.4   

  bbb:20:2.2   

  eee:50:5.5

  sort的-n、-r、-k、-t选项的使用:

  [root@mail text]# cat sort.txt   

  AAA:BB:CC   

  aaa:30:1.6   

  ccc:50:3.3   

  ddd:20:4.2   

  bbb:10:2.5   

  eee:40:5.4   

  eee:60:5.1   

  #将BB列按照数字从小到大顺序排列:   

  [root@mail text]# sort -nk 2 -t: sort.txt   

  AAA:BB:CC   

  bbb:10:2.5   

  ddd:20:4.2   

  aaa:30:1.6   

  eee:40:5.4   

  ccc:50:3.3   

  eee:60:5.1   

  #将CC列数字从大到小顺序排列:   

  [root@mail text]# sort -nrk 3 -t: sort.txt   

  eee:40:5.4   

  eee:60:5.1   

  ddd:20:4.2   

  ccc:50:3.3   

  bbb:10:2.5   

  aaa:30:1.6   

  AAA:BB:CC   

  # -n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号

  uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

  语法

  uniq(选项)(参数)

  选项

  -c或——count:  在每列旁边显示该行重复出现的次数;   

  -d或--repeated:  仅显示重复出现的行列;   

  -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;   

  -s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;   

  -u或——unique:仅显示出一次的行列;   

  -w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。

  实例

  删除重复行:

  uniq file.txt
  

  sort file.txt | uniq
  

  sort -u file.txt

  只显示单一行:

  uniq -u file.txt
  

  sort file.txt | uniq -u

  统计各行在文件中出现的次数:

  sort file.txt | uniq -c

  在文件中找出重复的行:

  sort file.txt | uniq -d

  利用sort和uniq求两个文件的并集,交集和差集

  并集:cat file1.txt file2.txt | sort | uniq > file.txt

  交集:cat file1.txt file2.txt | sort | uniq -d >file.txt

  差集:求file1.txt相对于file2.txt的差集,可先求出两者的交集temp.txt,然后在file1.txt中除去temp.txt即可。

     cat file1.txt file2.txt | sort | uniq -d >temp.txt

     cat file1.txt temp.txt | sort | uniq -u >file.txt

Linux中sort和uniq关于排序去重的那些用法的更多相关文章

  1. linux中sort、uniq、cut、tr、wc命令的使用

    文本处理命令 1.sort命令 使用场景 : 用于将文件内容加以排序(可以和cat一起用) 参数 作用 -n 依照数值的大小排序 -r 以相反的顺序来排序(默认只比较第一个数,-rn是按所有数值比较) ...

  2. [转帖]linux Shell sort按照指定列排序

    linux Shell sort按照指定列排序 https://blog.csdn.net/weixin_38308151/article/details/80760133 kubectl get p ...

  3. linux之sort和uniq

    uniq uniq命令: uniq不加参数,只对相邻的相同行内容去重. 例子如下: [root@localhost ~]# pwd /root [root@localhost ~]# cat oldb ...

  4. 11、Linux基础--sort、uniq、cut、tr、wc、流处理工具sed

    笔记 1.晨考 1.写出过滤手机号的正则表达式 1[0-9]{10} 2.写出过滤邮箱的正则表达式 chenyang@123.com [a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn ...

  5. linux 命令 — sort、uniq

    sort uniq sort:对行或者文本文件排序 uniq:去除重复的行 常用 sort -n file.txt 按数字进行排序 sort -r file.txt 按逆序进行排序 sort -M f ...

  6. Linux命令sort和uniq 的基本使用

    uniq 123.txt  去除连续重复uniq -u 123.txt  保留唯一uniq -c 123.txt  去重并计算出现的个数sort -n 123.txt | uniq -c 排序后去重s ...

  7. linux 中sort命令 按照指定列排序

    sort怎样按指定的列排序0000 27189 41925425065f 15 419254250663 7 419254250675 5 419254250691 76 419254250693 2 ...

  8. linux中sort命令

    功能说明:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序. 参 数: -b 忽略每行前面开始出的空格字符. -c 检查文件是否已经按照顺序排序. -d 排序时,处理英文字母.数 ...

  9. linux中sort命令全面解析

    目录 一:sort命令作用 二:sort格式 1.sort参数 2.参数解析 sort命令简介 Linux sort 命令用于将文本文件内容加以排序. sort 可针对文本文件的内容,以行为单位来排序 ...

随机推荐

  1. loadrunner之脚本篇——代理录制

    版本:Loadruner 11.0 A.PC端录制Web应用程序 步骤1:根据实际情况,选择对应的协议 本例中选择Web(HTTP/HTML),如下 步骤2:找到代理设置界面 点击 Start Rec ...

  2. 每天一个Linux命令(43)at命令

        at命令用于在指定时间执行命令.at允许使用一套相当复杂的指定时间的方法.可以用相对时间法指定,也可以用绝对时间法指定.     (1)用法:     用法:  at  [选项参数]  [时间 ...

  3. 【HackerRank】QuickSort(稳定快排,空间复杂度O(n))

    QuickSort In the previous challenge, you wrote a partition method to split an array into 2 sub-array ...

  4. Chrome 的 Rendering 监听器

    在研究动画优化时,有被安利一款这个...啥,额,就是,唔...就是一个能让我们看到动画卡不卡的监听器 火狐的“高亮重绘区域”个人感觉并不好用,而 Safari 竟然没找到,而 IE11 也没有(公司的 ...

  5. Hearbeat + Nginx 安装配置

    Hearbeat + Nginx 安装配置 实验环境 两台主机:Linux Centos 6.5 32位 主 服务端:Hearbeat + Nginx eth0:192.168.1.160(公网) e ...

  6. CSS3透明背景表单

    在线演示 本地下载

  7. QFile操作文件

    1.构造QFile对象 QFile file("C:\a.txt"); 或者 QFile *file = new QFile("C:\a.txt"); 2.设置 ...

  8. [C++] 麻将胡牌算法

    麻将的玩法规则众多,核心的玩法是一致的,本文将根据联发科2017年编程挑战赛的复赛题规则来实现. 牌的表示方式 ABCDEFGHI代表一到九萬,abcdefghi代表一到九条,123456789代表一 ...

  9. 【简单dp】poj 2127 Greatest Common Increasing Subsequence【最长公共上升子序列】【模板】

    Sample Input 5 1 4 2 5 -12 4 -12 1 2 4 Sample Output 2 1 4 题目:给你两个数字序列,求出这两个序列的最长公共上升子序列.输出最长的长度,并打表 ...

  10. sql 数据库中只靠一个数据,查询到所在表和列名

    有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的.只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名. 前提是要将 ...