Linux中sort和uniq关于排序去重的那些用法

  相信在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码值进行比较,最后将他们按升序输出。

  [[email protected] 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   

  [[email protected] 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:

  [[email protected] 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   

  [[email protected] 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   

  或者   

  [[email protected] 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选项的使用:

  [[email protected] 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列按照数字从小到大顺序排列:   

  [[email protected] 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列数字从大到小顺序排列:   

  [[email protected] 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

  差集:cat file1.txt file2.txt | sort | uniq -u >file.txt

时间: 2024-10-05 05:00:27

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

Linux的sort、uniq、wc命令

转自:http://10495845.blog.51cto.com/10485845/1671771 一.文本排序sort1.sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的.排序关键字定义了用来排序的最小的字符序列.缺省情况下以整行为关键字按"ASCII字符顺序"进行排序.例:1.  [[email protected] sort]# cat sort_default     ##示例文件2312334511144333678[[email protected] so

Linux中sort命令

Linux sort命令用于将文本文件内容按某种方式排序,默认是ASCII码方式: 语法说明: sort[-bcdfimMnur][-o<输出文件>][-t<分隔字符>][-k<n,m>][文件] 常用参数: -b 忽略每行前面开始出的空格字符. -c 检查文件是否已经按照顺序排序. -d 排序时,处理英文字母.数字及空格字符外,忽略其他的字符. -f 排序时,将小写字母视为大写字母. -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符. -m 将几

linux 中sort 的用法

sort 功能:逐行对文件中的内容进行排序,如果两行的首字母相同,继续比较这两行的下一个字符,依此类推 语法:    sort [选项]  文件 sort 排序是对指定文件中所有的行进行反序,并将结果显示在标准输出上,如不指定输入文件或者使用"-",则表示排序内容来自标准输入 sort 排序是根据从输入行抽取的一个或多个关健字进行比较来完成的,排序关键字用来排序的最小的字符序列,缺省情况下,以整行按 ASCII 字符顺序进行排序 改变缺省设置的选项有: -m    若给定文件已排好序,

linux中grep和find的用法区别

linux中grep和find的用法区别 本文章详细的介绍了关于在linux中的grep和find两个命令的用法介绍,以及后面总结了它们两年用法区别哦. 先我们来介绍一下关于grep用法和一些小注意事项 使用过程中,使用最多的参数就是 -v ,但是用着并不爽. 比如说,我想查找一个单词“UserService”,但是像”*.svn” 这种文件就不用显示了,我该怎么做呢? 代码如下 复制代码 grep -r "UserService" ./ | grep -v "svn&quo

Linux中的括号用法

一.Linux中的小括号(也叫圆括号)"( )"的用法 1.单小括号() 1)数组赋值或者初始化数组: 2)子Shell赋值:小括号中的内容会开启一个子shell独立运行:括号中以分号连接,最后一个命令不需要:各命令和括号无需空格:3)实现多条命令集合:新开多条命令来执行,各个命令之间用分号隔开,最后一个命令必须要分号来隔开:4)与"$"结合实现命令替换:等同于cmd 扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此

Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)

一. shell特殊符号cut命令 1.特殊符号 * :任意个任意字符 ? :任意单个字符# :注释\ :转义字符 | :管道符 2.几个和管道相关的命令 (1) cut cut 把文件分段 cat /etc/passwd cut -d: -f 3  /etc/passwd    cut -d: -f 3,6,5  /etc/passwd cut -d: -f 3-6  /etc/passwd cut -c 10 /etc/passwd   取第十个字符 cut -c 5-10 /etc/pas

sort排序命令 uniq 去除排序过的文件中的重复行 cut提取命令 wc 统计命令

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 [[email protected] ~]# sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使用『纯数字

Linux 去重 先sort再uniq

从uniq命令的帮助信息中可以看到,该命令只过滤相邻的重复行. 如果要去掉所有重复行,需要先排序,或者使用uniq -u $ uniq --h Usage: uniq [OPTION]... [INPUT [OUTPUT]] Filter adjacent matching lines from INPUT (or standard input), writing to OUTPUT (or standard output). With no options, matching lines ar

正则表达式 ------排序三工具(sort、uniq、wc)

一.sort 工具 (1)sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序 (2)sort 命令格式:sort [选项] 参数 (3)常用的选项: -f:忽略大小写: -b:忽略每行前面的空格: -M:按照月份进行排序: -n:按照数字进行排序: -r:反向排序: -u:等同于 uniq,表示相同的数据仅显示一行: -t:指定分隔符,默认使用[Tab]键分隔: -o <输出文件>:将排序后的结果转存至指定文件: -k:指定排序区域: 示例1:将 /etc/pa