linux 管理小命令5—— 排序与统计命令sort wc uniq

1• sort
sort 是很有趣的指令,他可以帮我们进行排序,而且可以依据不同的数据型态来排序喔! 例如数字与文字的排序就不一样。此外,排序的字符与语系的编码有关,因此, 如果您需要排序时,建议使用 LC_ALL=C 来让语系统一,数据排序比较好一些。
[root@linux ~]# sort [-fbMnrtuk] [file or stdin]
参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(预设是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是 tab 键;
-k :以那个区间 (field) 来进行排序的意思,
范例:

范例一:个人账号都记录在 /etc/passwd 下,请将账号进行排序。
[root@linux ~]# 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@linux ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
iiimd:x:100:101:IIIMF server:/usr/lib/iiim:/sbin/nologin
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@linux ~]# last | cut -d ' ' -f1 | sort
sort 同样是很常用的指令呢!因为我们常常需要比较一些信息啦! 举个上面的第二个例子来说好了!今天假设你有很多的账号,而且你想要知道最大的使用者 ID 目前到哪一号了!呵呵!使用 sort 一下子就可以知道答案咯!当然其使用还不止此啦! 有空的话不妨玩一玩!
• uniq
如果我排序完成了,想要将重复的资料仅列出一个显示,可以怎么做呢?
[root@linux ~]# uniq [-ic]
参数:
-i :忽略大小写字符的不同;
-c :进行计数
范例:
范例一:使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位;
[root@linux ~]# last | cut -d ' ' -f1 | sort | uniq
范例二:承上题,如果我还想要知道每个人的登入总次数呢?
[root@linux ~]# last | cut -d ' ' -f1 | sort | uniq -c

这个指令用来将『重复的行删除掉只显示一个』,举个例子来说, 你要知道这个月份登入你主机的使用者有谁,而不在乎他的登入次数,那么就使用上面的范例, (1)先将所有的数据列出;(2)再将人名独立出来;(3)经过排序;(4)只显示一个! 由于这个指令是在将重复的东西减少,所以当然需要『配合排序过的档案』来处理啰!
• wc
如果我想要知道 /etc/man.config 这个档案里面有多少字?多少行?多少字符的话, 可以怎么做呢?其实可以利用 wc 这个指令来达成喔!他可以帮我们计算输出的讯息的整体数据!
[root@linux ~]# wc [-lwm]
参数:
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
范例:
范例一:那个 /etc/man.config 里面到底有多少相关字、行、字符数?
[root@linux ~]# cat /etc/man.config | wc
138 709 4506
# 输出的三个数字中,分别代表: 『行、字数、字符数』
范例二:我知道使用 last 可以输出登入者,但是 last 最后两行并非账号内容,
那么请问,我该如何以一行指令串取得这个月份登入系统的总人次?
[root@linux ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l

# 由于 last 会输出空白行与 wtmp 字样在最底下两行,因此,我利用
# grep 取出非空白行,以及去除 wtmp 那一行,在计算行数,就能够了解啰!
wc 也可以当作指令?呵呵!这可不是上洗手间的 WC 呢! 这是相当有用的计算档案内容的一个工具组喔!举个例子来说, 当你要知道目前你的账号档案中有多少个账号时,就使用这个方法:『 cat /etc/passwd | wc -l 』啦!因为 /etc/passwd 里头一行代表一个使用者呀! 所以知道行数就晓得有多少的账号在里头了!而如果要计算一个档案里头有多少个字符时,呵呵!就使用 wc -c 这个参数吧!

时间: 2024-11-10 10:55:42

linux 管理小命令5—— 排序与统计命令sort wc uniq的相关文章

linux 管理小命令2——cd,basename,file,locate,ar,which和whereis,banner,finger

1.cd:  cd 大家都知道怎么用,但是有三个选项大家可能不是很清楚,' -'    '-L'    ' -P ' 这三个选项,具体什么意思呢?是这个样子滴:这几个选项是跟连接具体相关的,比如你给/home/liu/yg/liy2 目录下的目录lyg1这个目录建立了一个连接 名字叫liu ,那么当你在/home/liu/yg/liy2 目录下输入: cd -P  liu 的时候,就进入了你原来的目录:/home/liu/yg/liy2/lyg1里面了.而-L 就是进入符号连接的本身如: cd

linux 管理小命令8—— 用户登陆查看

1 1.inux lastb命令详解   功能说明:列出登入系统失败的用户相关信息.   语 法:lastb [-adRx][-f <记录文件>][-n<显示列数>][帐号名称...][终端机编号...]   补充说明:单独执行lastb指令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容 记录的登入失败的用户名单,全部显示出来.   参 数: -a  把从何处登入系统的主机名称或IP地址显示在最后一行. -d  将IP地址转换成主机名称. -f<记

linux 管理小命令7—— 用户管理

1.基本文件介绍: 先介绍基本的名词概念吧,太基本了,我只列出来,你若不知道什么意思,就自己百度吧: UID和GID:每个登陆linux系统的使用者都会取得两个ID,分别是UID(user id)和GID(group id),每个文件都会有拥有者ID,和拥有群组ID,也就是UID/GID. /etc/passwd 和 /etc/shadow:前者是用户信息,后者是用户密码信息.一个用户在登陆框输入账号密码进行login的时候,系统会先找passwd文件里是否有这个账号,没有则跳出,有的话则读出账

linux 管理小命令4—— 压缩与解压缩下篇

原文整理自网络: cpio命令用法 cpio命令      利用cpio 可将文件或目录从文件库获取出来或将散列文件拷贝到文件库.cpio 的指令格式:          cpio –i[bcdmrtuv] [patterns]          cpio –o [abcv]          cpio –p [adlmuv][directory]  说明:cpio 共有三种基本模式: -o即copy-out 模式,将一组文件copy到一个文件库, -i 即copy-in 模式,读取文件库,并将

linux 管理小命令3—— 压缩与解压缩上篇

1.compress 使用权限:所有使用者 使用方式:compress [-dfvcV] [-b maxbits] [file ...] 说明:compress是一个相当古老的unix档案压缩指令,压缩后的档案会加上一个.Z延伸档名以区别未压缩的档案,压缩后的档案可以以uncompress解压.若要将数个档案压成一个压缩档,必须先将档案tar起来再压缩.由于gzip可以产生更理想的压缩比例,一般人多已改用gzip为档案压缩工具.  参数:  c输出结果至标准输出设备(一般指荧幕)  f强迫写入档

linux 管理小命令1——cp

1.cp 功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息 参数:      -a 或 --archive     此参数的效果和同时指定"-dpR"参数相同      -b 或 --backup      删除.覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目

Linux下查看access访问日志IP统计命令

查看 access.Log 文件ip统计 cat access.log |awk '{print $1}'|uniq -c |sort -k1,1nr 去掉r则从高到低 cat access.log |awk '{print $3}'|sort|uniq -c|sort -rn|wc -l 以前用过简单的统计下IP,似乎不怎么准确,后来已经用 awstats 就没用过他了

Linux管理常见的十大错误

  对于Linux管理员来说有时会犯一些小的Linux管理常见错误,但是是对于一些刚步入Linux管理大门的管理员来说,如果不避免一些常见的错误,就容易给单位的网络或系统带来安全风险. 这里介绍十个Linux管理常见的错误,以帮助新手来改进工作. Linux管理常见错误一:不经过严格审核,从多种渠道下载安装各种类型的应用程序 乍看起来,这也许是一个不错的主意.如果你在运行Ubuntu,你会知道包管理程序使用的是.deb软件包.不过,你找到的许多应用程序是以源代码的形式提供的.没有问题吗?这些程序

Linux管理常见错误的解决方法

对于linux管理员来说有时会犯一些小的linux管理常见错误,但是是对于一些刚步入Linux管理大门的管理员来说,如果不避免一些常见的错误,就容易给单位的网络或系统带来安全风险.这里介绍十个linux管理常见的错误,以帮助新手来改进工作. linux管理常见错误一:不经过严格审核,从多种渠道下载安装各种类型的应用程序 乍看起来,这也许是一个不错的主意.如果你在运行Ubuntu,你会知道包管理程序使用的是.deb软件包.不过,你找到的许多应用程序是以源代码 的形式提供的.没有问题吗?这些程序安装