很多时候,我们都会去计算一次数据里头的相同型态的数据总数,举例来说, 使用 last 可以查得这个月份有登陆主机者的身份。那么我可以针对每个使用者查出他们的总登陆次数吗? 此时就得要排序与计算之类的命令来辅助了!底下我们介绍几个好用的排序与统计命令喔!


  • sort

sort 是很有趣的命令,他可以帮我们进行排序,而且可以依据不同的数据型态来排序喔! 例如数字与文字的排序就不一样。此外,排序的字符与语系的编码有关,因此, 如果您需要排序时,建议使用 LANG=C 来让语系统一,数据排序比较好一些。

[root@www ~]# sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符,默认是用 [tab] 键来分隔;
-k  :以那个区间 (field) 来进行排序的意思范例一:个人账号都记录在 /etc/passwd 下,请将账号进行排序。
[root@www ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
# 鸟哥省略很多的输出~由上面的数据看起来, sort 是默认『以第一个』数据来排序,
# 而且默认是以『文字』型态来排序的喔!所以由 a 开始排到最后啰!范例二:/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何?
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
# 看到特殊字体的输出部分了吧?怎么会这样排列啊?呵呵!没错啦~
# 如果是以文字型态来排序的话,原本就会是这样,想要使用数字排序:
# cat /etc/passwd | sort -t ':' -k 3 -n
# 这样才行啊!用那个 -n 来告知 sort 以数字来排序啊!范例三:利用 last ,将输出的数据仅取账号,并加以排序
[root@www ~]# last | cut -d ' ' -f1 | sort

sort 同样是很常用的命令呢!因为我们常常需要比较一些信息啦! 举个上面的第二个例子来说好了!今天假设你有很多的账号,而且你想要知道最大的使用者 ID 目前到哪一号了!呵呵!使用 sort 一下子就可以知道答案咯!当然其使用还不止此啦! 有空的话不妨玩一玩!


  • uniq

如果我排序完成了,想要将重复的数据仅列出一个显示,可以怎么做呢?

[root@www ~]# uniq [-ic]
选项与参数:
-i  :忽略大小写字符的不同;
-c  :进行计数范例一:使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位;
[root@www ~]# last | cut -d ' ' -f1 | sort | uniq范例二:承上题,如果我还想要知道每个人的登陆总次数呢?
[root@www ~]# last | cut -d ' ' -f1 | sort | uniq -c112 reboot41 root1 wtmp
# 从上面的结果可以发现 reboot 有 12 次, root 登陆则有 41 次!
# wtmp 与第一行的空白都是 last 的默认字符,那两个可以忽略的!

这个命令用来将『重复的行删除掉只显示一个』,举个例子来说, 你要知道这个月份登陆你主机的用户有谁,而不在乎他的登陆次数,那么就使用上面的范例, (1)先将所有的数据列出;(2)再将人名独立出来;(3)经过排序;(4)只显示一个! 由于这个命令是在将重复的东西减少,所以当然需要『配合排序过的文件』来处理啰!


  • wc

如果我想要知道 /etc/man.config 这个文件里面有多少字?多少行?多少字符的话, 可以怎么做呢?其实可以利用 wc 这个命令来达成喔!他可以帮我们计算输出的信息的整体数据!

[root@www ~]# wc [-lwm]
选项与参数:
-l  :仅列出行;
-w  :仅列出多少字(英文单字);
-m  :多少字符;范例一:那个 /etc/man.config 里面到底有多少相关字、行、字符数?
[root@www ~]# cat /etc/man.config | wc 141     722    4617
# 输出的三个数字中,分别代表: 『行、字数、字符数』范例二:我知道使用 last 可以输出登陆者,但是 last 最后两行并非账号内容,那么请问,我该如何以一行命令串取得这个月份登陆系统的总人次?
[root@www ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
# 由于 last 会输出空白行与 wtmp 字样在最底下两行,因此,我利用
# grep 取出非空白行,以及去除 wtmp 那一行,在计算行数,就能够了解啰!

wc 也可以当作命令?这可不是上洗手间的 WC 呢!这是相当有用的计算文件内容的一个工具组喔!举个例子来说, 当你要知道目前你的账号文件中有多少个账号时,就使用这个方法:『 cat /etc/passwd | wc -l 』啦!因为 /etc/passwd 里头一行代表一个使用者呀! 所以知道行数就晓得有多少的账号在里头了!而如果要计算一个文件里头有多少个字符时,就使用 wc -m 这个选项吧!

排序命令: sort, wc, uniq相关推荐

  1. 【Linux】排序命令sort

    很多时候,我们都会去计算一次数据里头的相同型态的数据总数,举例来说, 使用 last 可以查得这个月份有登陆主机者的身份.那么我可以针对每个使用者查出他们的总登陆次数吗? 此时就得要排序与计算之类的命 ...

  2. c#sort升序还是降序_Linux排序命令sort笔记

    很多时候Linux需要对文本相对比较规范的文本数据进行排序,这时候可以使用Linux系统下的sort命令进行处理. 语法格式:sort [-ntkr] filename 常用参数: -n 根据数字进行 ...

  3. 65.shell特殊符号与和cut,sort,wc,uniq,tee,tr,split命令

    liunx的特殊符号 代表字母或者数字 多个 ? 任意一个字符 "#" 注释 \ 脱义字符 | 管道符 1.* 代表任意个任意字符或者数字 [root@localhost /]# ...

  4. Linux文件内容排序命令sort

    sort 命令 sort将文件的每一行作为一个单位,相互比较, 比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. sort : 只有sort 情况下,前面有空格的默认排到最 ...

  5. RHEL6基础三十四之服务器维护基础命令④sort、uniq

    sort 格式:sort [-options] filename[s] 功能:将文件的每一行作为一个单位,相互比较,最后将他们按升序输出,比较原则是从首字符向后,依次按ASCII码值进行比较. 1 2 ...

  6. Linux排序命令sort详解

    语法格式sort [ -A ] [ -b ] [ -c ] [ -d ] [ -f ] [ -i ] [ -m] [ -n ] [ -r ] [ -u ] [ -o OutFile ] [ -t Ch ...

  7. Linux排序命令sort笔记

    很多时候Linux需要对文本相对比较规范的文本数据进行排序,这时候可以使用Linux系统下的sort命令进行处理. 语法格式:sort [-ntkr] filename 常用参数: -n 根据数字进行 ...

  8. linux 输入8个字母进行排序,Linux排序命令sort详解

    语法格式sort [ -A ] [ -b ] [ -c ] [ -d ] [ -f ] [ -i ] [ -m] [ -n ] [ -r ] [ -u ] [ -o OutFile ] [ -t Ch ...

  9. 利用linux命令sort和uniq求两个文件的交集并集和补集

    给定两个文件 a.txt 和 b.txt ,每行是一个记录(假设没有重复),要求输出两集合的交集.并集.差集,输出的结果只包括唯一项.交集定义为同时出现在两个文件中的记录项,并集定义为出现在任何一个文 ...

最新文章

  1. Java内存模型深度解析:顺序一致性
  2. POJ - 3255 Roadblocks(次短路)
  3. github上传的项目代码语言类型修改
  4. RelativeLayout设置wrap_content无效
  5. 实时数据处理环境搭建flume+kafka+storm:4.storm安装配置
  6. iphone开机白苹果_「手机维修自学教程」苹果6PLUS的DFU模式故障维修技巧思路决定速度...
  7. 交易系统开发(七)——交易延迟分析
  8. python怎么用pip安装numpy_python如何安装numpy
  9. python使用numpy按一定格式读取bin文件
  10. 腾讯云网站备案咨询:网站信息类问题汇总解答
  11. swiper 移动端选项卡_基于swiper的Tab选项卡
  12. fly.io ruby on rails
  13. Android————一个简单的新闻面板
  14. testlink mysql_windows下testlink环境搭建
  15. 移动端如何解决video层级最高的问题
  16. 苹果Apple正式发布iPad2一代降价超千元
  17. 解决MPS运行中出现Unsupported major.minor version错误问题
  18. Extjs6关于Ajax和form表单提交以及store请求session超时的处理方法
  19. gitlab默认加密方式
  20. 学会这120个PS技巧,让你的设计牛起来!

热门文章

  1. 04——确定对象使用前被初始化
  2. Win7访问局域网内共享文件夹
  3. leetcode 22. 括号生成
  4. String类中的equals方法与Object类中的equals方法的不同点
  5. 计算机视觉面试常见问题(含解答)
  6. Tensorflow 2.0的这些新设计,你适应好了吗?
  7. Fedora重新调整发布周期,Fedora 30将保留很长时间
  8. java修改文件的大小限制_Struts2修改上传文件大小限制方法解析
  9. 008_HttpServletRequest对象
  10. 074_html5音频