相信在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. Log level with log4j and Spark

    Log Level Usages OFF This is the most specific, which allows no logging at all FATAL This is the mos ...

  2. dict字典常用方法总结,数据解构(解包)

    dict {'name':'holle'}字典存储大量关联型数据,可迭代的,最多只有200个键.查询数据速度非常快,符合二分查找(有100个数比如找75会先找到50然后判断,所以2^7次方7次即可找到 ...

  3. Apache commons-io实现单文件读取和写入

    Apache commons-io提供了很多类,这里只介绍FileUtils类. FileUtils类提供了一些操作文件对象的实用方法,包括文件的读取.写入.复制和比较等. 比如逐句读取和写入一个文件 ...

  4. HTML系列(3)基本的HTML标签(二)

        本节继续介绍HTML的常用标签.     (1)input标签之文本域(text和textarea).密码域(password): <!DOCTYPE html> <html ...

  5. 8位单片机可用的 mktime localtime函数

    8位单片机可用的 mktime  localtime函数及源码 最近在做一个8位单片机项目,其中用到了时间戳转换函数,这个在32位机上一个库函数就解决了问题,没想到在8位单片机中没有对应库(time. ...

  6. 《网络对抗》 逆向及Bof基础实践

    <网络对抗>-逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数, ...

  7. 高通平台Bootloader启动流程【转】

    本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...

  8. 重置密码解决MySQL for Linux错误 ERROR 1045 (28000)

    重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...

  9. struct2学习

    struct1和webwork产生Struts2. struts2每次访问必定创建一个action,struts1只要一个action对象. Url中动态方法调用DMI 约定优于配置.miamhuai ...

  10. PrintWriter的使用

    java.io.PrintWriter 具有自动行刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动行刷新. java.io.BufferedWriter是缓冲字符输出流,内部有缓冲区可以进 ...