运维工作经常会处理目录或文本的输出问题,命令行模式的显示不像图形化那么人性化,所以基本的排序命令会让你在处理问题是更舒服,还能降低出错率,今天主要介绍sort与uniq。

##################################################################

sort命令:

       sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。Sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较

   语法:

                sort :排序
                      默认的情况下是按照字符排序
                          -n  : 按照数值排序
                          -u  : 不出现重复的行
                          -r  :  逆向排序
                          -t  : 指定分段的符号
                          -k  :  指定的第几个段

     sort可以直接查看文件,也可以通过管道,将前面的输出当sort的源,去对想要处理的目标排序。基本的排序都很简单,下面举例说下 -t 与 -k 参数的组合使用。

# cat sort.txt           #查看下我的实例文件
a 34234sdfs fsdfsdf z231345456 923131
x asdafdf 12313asd a213dsfsdfs 453535
h dsfsfsdf sfa3255 b3asdafgadg 236456
o dsdfs123 23454 g4sdfdsa133 353535


# cat sort.txt | sort -t " " -k 4  #对其排序,-t指定空格为定界符,-k 指定四个字段 
x asdafdf 12313asd a213dsfsdfs 453535
h dsfsfsdf sfa3255 b3asdafgadg 236456
o dsdfs123 23454 g4sdfdsa133 353535
a 34234sdfs fsdfsdf z231345456 923131

#####################################################################

unip命令:

          与sort的机制类似。

        语法     

       uniq  相当于sort -u
           sort | uniq=sort -u
           uniq -u 只显示不重复的行
           -d 只显示重复的行
           -c 显示出现的几次 

举例说明:

# cat sort.txt                 #查看文件
a 34234sdfs fsdfsdf z231345456 923131
x asdafdf 12313asd a213dsfsdfs 453535
x asdafdf 12313asd a213dsfsdfs 453535
x asdafdf 12313asd a213dsfsdfs 453535
x asdafdf 12313asd a213dsfsdfs 453535
x asdafdf 12313asd a213dsfsdfs 453535
a 34234sdfs fsdfsdf z231345456 923131
h dsfsfsdf sfa3255 b3asdafgadg 236456
o dsdfs123 23454 g4sdfdsa133 353535
o dsdfs123 23454 g4sdfdsa133 353535


# cat sort.txt | uniq         #去除重复行
a 34234sdfs fsdfsdf z231345456 923131
x asdafdf 12313asd a213dsfsdfs 453535
a 34234sdfs fsdfsdf z231345456 923131
h dsfsfsdf sfa3255 b3asdafgadg 236456
o dsdfs123 23454 g4sdfdsa133 353535

-bash-3.2# cat sort.txt | uniq -c   #显示重复出现的行的次数
      1 a 34234sdfs fsdfsdf z231345456 923131
      5 x asdafdf 12313asd a213dsfsdfs 453535
      1 a 34234sdfs fsdfsdf z231345456 923131
      1 h dsfsfsdf sfa3255 b3asdafgadg 236456
      2 o dsdfs123 23454 g4sdfdsa133 353535