关闭

Linxu命令 - uniq、sort、wc

577人阅读 评论(0) 收藏 举报
分类:

sort

sort 排序

                  -f            #忽略大小写的差异,列如A与a视为编码相同

                  -b           #忽略每行前面开始处的空格字符

                    -M        #以月份的名字来排序,列如JAN,DEC等等的排序方法

                    -n           #使用纯数字 进行排序(默认是以文字形态来排序的)

                      -r            #以相反的顺序来排序

                      -t           #指定排序时所用的栏位分隔字符,默认是用[tab]键来分隔

                     -k           #指定以哪一个区间(field)来进行排序

                     -u          #就是uniq,相同的数据中,仅出现一行代表

                    -o        #  将排序后的结果存入指定的文件

                    -m        #将几个排序好的文件进行合并

       +<起始栏位>-<结束栏位>         # 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位

                     -c           #检查文件是否已经安装顺序排序

                      -T        #指定临时文件目录,默认在/tmp

                   -d          #排序时,处理英文字母、数字及空格字符外,忽略其他的字符

              

[root@CentOS6   ~] cat text
vegetable soup
fresh vegetables
fresh fruit
lowfat milk
[root@CentOS6   ~] Sort text
freshfruit
freshvegetables
lowfat milk
vegetable soup

sort 默认是以 [ 第一个数据 ] 进行排序,而且默认是以 [ 文字 ] 形态来排序的

注意:在源文件的第二、三行上的第一个单词完全相同,该命令将从它们的第二个单词vegetables与fruit的首字符处继续进行比较


在/etc/passwd内容都是以:来分隔的,我想以第三区间来排序如何?

[root@centos6 ~]# cat  /etc/passwd |  sort  -t ':'  -k 3  -n

Op_teach:x:501:504::/home/Op_teach:/bin/bash
Op_office:x:502:508::/home/Op_office:/bin/bash
Op_admin:x:503:506::/home/Op_admin:/bin/bash
Op_finance:x:504:505::/home/Op_finance:/bin/bash
Op_market:x:505:507::/home/Op_market:/bin/bash

不加 -n  的话 默认是以字符形态 来排序的,而这里的第三区间是数字形态,也就是说不加-n,就不会排序


[root@centos6 ~]#        last  |  cut  -d  ' '  -f1  | sort | uniq  -c

[root@centos6 ~]#         sort    -n                                           # 按数字排序

[root@centos6 ~]#           sort      -nr                                       # 按数字倒叙

 [root@centos6 ~]#          sort       -u                                      #过滤重复行

[root@centos6 ~]#          sort        -m    a.txt      c.txt            #将两个文件内容整合到一起 

[root@centos6 ~]#          sort -n -t' ' -k 2 -k 3 a.txt                  # 第二区间相同,将从第三区间进行升降处理
 [root@centos6 ~]#        sort -n -t':' -k 3r a.txt                  # 以:为分割域的第三区间进行倒叙排列
[root@centos6 ~]#         sort -k 1.3 a.txt                        # 从第三个字母起进行排序
[root@centos6 ~]#        sort -t" " -k 2n -u  a.txt               # 以第二区间进行排序,如果遇到重复的,就删除


Uniq

将重复的数据仅列出一个显示,消除重复行

uniq 

              -i     忽略大小写字符的不同

              -c   进行计数

              -d   只显示重复出现的行列



来自: http://man.linuxde.net/uniq

使用last将账号列出,列出登陆次数最多的前两名

[root@centos6 ~]# last   |  cut  -d  ‘’  -f1  |  uniq -c  | sort -rn |  head  -2

41   root

12  reboot


WC

统计文件里有多少行?多少字?多少字符

wc

               -l           仅列出行

              -w           仅列出多少字(英文单词);

              -m           多少字符


例一:/etc/man.config  里面到底有多少相关字、行、字符数?

[root@centos6 ~]# cat   /etc/man.config   | wc

 141              722       4517

  行                字数      字符数


例二:获取这个月份登陆系统的总人次?

[root@centos6 ~]#   last   |  grep   [a-z A-Z ]   | grep   -v   'wtmp'  | wc -l

由于last  会输出空白行与wtmp字样在最底下两行,因此,我利用grep取出非空白行,以及去除wtmp哪一行,在计算行数(一行代表一个用户)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:44298次
    • 积分:1130
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:16篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论