linux sort命令


排序命令: sort, wc, uniq

回到顶部
很多时候,我们都会去计算一次数据里头的相同型态的数据总数,举例来说, 使用 last 可以查得系 统上面有登入主机者的身份。那么我可以针对每个使用者查出他们的总登入次数吗? 此时就得要排 序与计算之类的命令来辅助了!底下我们介绍几个好用的排序与统计命令喔!
sort可以依据不同的数据型态对行进行排序! 例如数字与文字的排序就不一样。 此外,排序的字符与语系编码有关,排序前,建议使用LANG=C让语系统一,数据排序比较好一些。
[peter@study ~]$ sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用数值型进行排序(默认是以字符型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
对/etc/passwd文件中的用户账号进行排序:
[peter@study ~]$ cat /etc/passwd | sort
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:109:114:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
avahi:x:115:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
colord:x:116:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
cups-pk-helper:x:106:112:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...省略...
由上面的数据可以看出, sort默认以第一个字段数据来排序,并且默认是以字符型来排序!
将/etc/passwd文件中的内容以第三个字段排序:
[peter@study ~]$ cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
peter:x:1000:1000:peter,,,:/home/peter:/bin/bash
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
www:x:1002:1002::/home/www:/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
...省略...
/etc/passwd文件中的字段是以:作为分隔符,所以需要用-t指定分隔符。由于sort默认是以字符型排序,上面我们可以看到100在1000的后面。 需要使用-n选项,这样sort就会把第三个字段作为数值进行排序:
[peter@study ~]$ cat /etc/passwd | sort -t ':' -k 3 -n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
...省略...
  
sort是很常用的命令。假设有很多的账号,想要知道最大的用户ID目前到哪一号了!使用sort就可以很容易知道答案了!
取last输出中的账号信息并加以排序:
[peter@study ~]$ last | cut -d ' ' -f1 | sort

本文由initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读