sort命令
参数
-n 按字符串数值排序
-f 忽略大小写
-r 降序排序,默认为升序
-u 取出重复行
-o 将输出写入文件
-t 指定列的分隔符
-k指定以第几列排序
举例
test文件为
1
200
100
2
sort test 以字母序升序排列test文件
sort -n test 以数字序列排序test文件
head -20 /etc/passwd | tail -10 | sort -t ':' -k 3 -nr
将/etc/passwd文件的第10-20行按照以:分割的第3列数字序列倒序排列
sort test -o test
如果想将文件原地排序,则不能使用输出重定向,而是使用-o
sort -u test
将test文件排序后去重
sort -k2nr -k1n test
将test文件先按照第2列倒序排列,再按照第1列正序排列
uniq
uniq去重只是去掉相邻重复行,并不统计文件中所有的重复行
参数
-c:在数据行前出现的次数
-d:只打印重复的行,重复的行只显示一次
-D:只打印重复的行,重复的行出现多少次就显示多少次
-f:忽略行首的几个字段
-i:忽略大小写
-s:忽略行首的几个字母
-u:只打印唯一的行
-w:比较不超过n个字母
举例
uniq -c test
显示出现行数
uniq -dc test
只打印重复行
uniq -u test
只打印唯一行
sort 和uniq结合
sort -u可以将文件排序后去重
uniq只能将文件相邻去重
sort test | uniq -c
可以在去重的基础上输出出现的行数