Linux下的sort、uniq命令笔记

99 阅读2分钟

本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路

命令:sort、uniq

  • 命令:sort
用途:排序,默认升序

常用参数:
	-b 忽略每行开始出的空格字符
	-c 检查文件是否已经安装顺序排序
	-d 排序时处理英文子、数字、及空格字符外,忽略其他的字符
	-f 排序时将小写字符视为大些字母
	-k 指定列数
	-m 将几个排列好的文件进行合并
	-M 将前面的三个字母依照月份进行排序
	-n 依照数字大小进行排序
	-o 将排序后的结果存入到指定的文件
	-r 以相反的顺序排序
	-t 指定分隔符
	-u 去重  ( 关联命令:uniq 删除重复的行)

举例:
	[root@test aaa]# sort abc.txt     将会升序排列内容
	[root@test aaa]# sort -ru abc.txt  倒序去重排列

	[root@test aaa]# sort -nk1 -t'-' data.txt 
	2011-01-09
	2014-12-12
	2017-10-09
	2018-10-10

	[root@test aaa]# ls -l | sort -rnk5   以文件大小排序
	#关联命令:ls -lS  以文件大小排序

	[root@test aaa]#sort -m l.txt yuefen.txt -o newtxt.txt 合并两个文件
	#关联命令:cat  l.txt yuefen.txt > qa.txt
  • 命令:uniq
用途:删除文件中重复的行,去重

常用参数:
	
	-c  在输出行前边加上每行出现的次数统计
	-d  仅仅显示重复行
	-D  显示重复行(所有的)【不可与c同时使用】
	-u  仅仅显示不重复行
	-i  忽略大小写字符的不同
	-f 忽略某一列(-f2,忽略第二列字段)
	-s 忽略前几个字符(-s5 忽略前五个字符)
	-z  zreo
	-w 对前几个字符以后的不做比较(-w3 只比较前三个字符)

举例:
使用到的文本内容:
[root@test aaa]# cat uniqtest.txt 
dog is red or blue
dog is red or blue
cat is red or blue
aaa are red or blue
vvv aer ddd or blue
vvv aer ttt ro  hate



参数: -c
[root@test aaa]# uniq -c uniqtest.txt 
      2 dog is red or blue
      1 cat is red or blue
      1 aaa are red or blue
      1 vvv aer ddd or blue
      1 vvv aer ttt ro  hate

参数:-cd 仅仅显示重复行,并统计个数
[root@test aaa]# uniq -cd uniqtest.txt 
      2 dog is red or blue

参数:-D 显示重复行(列出所有的)
[root@test aaa]# uniq -D uniqtest.txt 
dog is red or blue
dog is red or blue

参数:-u  显示不重复的行
[root@test aaa]# uniq -u uniqtest.txt 
cat is red or blue
aaa are red or blue
vvv aer ddd or blue
vvv aer ttt ro  hate

参数:-f  忽略某一列
[root@test aaa]# uniq -cf1 uniqtest.txt 
      3 dog is red or blue
      1 aaa are red or blue
      1 vvv aer ddd or blue
      1 vvv aer ttt ro  hate

参数:-s 忽略前几个字符
[root@test aaa]# uniq -cs3 uniqtest.txt 
      3 dog is red or blue
      1 aaa are red or blue
      1 vvv aer ddd or blue
      1 vvv aer ttt ro  hate

参数:-w 只比较前几个字符,忽略以后的所有
[root@test aaa]# uniq -cw3 uniqtest.txt 
      2 dog is red or blue
      1 cat is red or blue
      1 aaa are red or blue
      2 vvv aer ddd or blue