sort -u 和uniq

文本:

ddd
aaa
ddd
ddd
aaa
ccc
ccc
ddd
ccc
ccc

全文去重,并且排序
sort -u 1

sort  -u 1
aaa
ccc
ddd

相邻去重

 uniq 1
ddd
aaa
ddd
aaa
ccc
ddd
ccc

sort命令支持很多参数,常用参数如下:

-n – number-sort 按字符串数值排序,与-g区别为不转为浮点数
-g –general-number-sort 按通用数值排序,支持科学计数法
-f –ignore-case 忽略大小写,默认大小写字母不同
-k –key=POS1[,POS2] 排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序
-t –field-separator=SEP 指定列的分割符
-r –reverse 降序排序,默认为升序
-h –human-numeric-sort 使用易读性数字(例如: 2K 1G)
-u –unique 去除重复的行
-o –output=FILE 将输出写入文件

uniq 参数

-c, --count 在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated 只输出重复的行
-D, --all-repeated[=delimit-method 显示所有重复的行
delimit-method={none(default),prepend,separate}
以空行为界限
-f, --skip-fields=N 比较时跳过前N 列
-i, --ignore-case 在比较的时候不区分大小写
-s, --skip-chars=N 比较时跳过前N 个字符
-u, --unique 只显示唯一的行
-z, --zero-terminated 使用’\0’作为行结束符,而不是新换行
-w, --check-chars=N 对每行第N 个字符以后的内容不作对照
–help 显示此帮助信息并退出
–version 显示版本信息并退出

uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用没有uniq 的"sort -u"。

如果不想排序又想全文去重:

cat 1 |awk '{if(!($0 in a)){print $0};a[$0];}'
ddd
aaa
ccc

”!” 即非;
a[$0],以$0为数据下标,建立数组a
awk中的数组是关联数组,特点就是,她的下标可以是整数,也可以是负数,或者是字符串。下标是可以不连续的。awk 的起始默认下标是1,而不是0
引用awk的基本方法是
array[index]
需要注意的是,此引用方式除非方括号中是变量,否则需要加上双引号。如果下标是数字,那就可以不遵守了。

awk 命令种的 变量
 $0代表整个文本行;
 $1代表文本行中的第1个数据字段;
 $2代表文本行中的第2个数据字段;
 $n代表文本行中的第n个数据字段。

你可能感兴趣的:(sort -u 和uniq)