欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

基础文本处理工具

程序员文章站 2022-04-11 21:21:57
文本处理工具:wc、tr、cut、sort、uniq、paste、diff、patch wc(word count) 字符统计 wc [option] [file]... -l 统计行数lines -w 统计单词数word(以空格、制表符、换行符为分隔符) -c 统计字节数character 演示: ......

文本处理工具:wc、tr、cut、sort、uniq、paste、diff、patch
  wc(word count) 字符统计
  wc [option] [file]...
  -l  统计行数lines
  -w 统计单词数word(以空格、制表符、换行符为分隔符)
  -c 统计字节数character

演示:
[root@centos7 ~]# wc -l /etc/passwd
46 /etc/passwd
[root@centos7 ~]# wc -w /etc/passwd
90 /etc/passwd
[root@centos7 ~]# wc -c /etc/passwd
2467 /etc/passwd

[root@centos7 ~]# wc /etc/passwd
46 90 2467 /etc/passwd

 tr 转换或删除字符,tr '集合1' '集合2',必须使用管道输出作为该命令参数
 转换字符:会把第一个字符集的对应转换为第二个字符集中的对应转换
  [root@localhost ~]# echo "hello word" | tr [a-z] [a-z]
  hello word
  -d 删除字符集中出现的字符
    [root@localhost ~]# echo "hello word" | tr -d r
    hello wod
  -s 压缩输入中重复的字符
    [root@localhost ~]# echo "gnu is    not      unix. recursive right ?" | tr -s ' ' (去除连续重复的空白字符)
    gnu is not unix. recursive right ?  
  -c  取"集合1"中字符集的补集,用"集合2"替换"集合1"的补集,要求字符集为ascii(可以结合-d命令使用)
    反选设定字符,也就是符合"set1"的部份不做处理,不符合的剩余部份才进行转换

演示:
tr 加选项 -t 和不加的区别,如下:
# 对位替换
[root@centos7 ~]# echo abcde |tr 'a-c' 'a-z'
abcde
[root@centos7 ~]# echo abcde |tr 'abc' 'a-z'
abcde
[root@centos7 ~]# echo abcde |tr 'abc' 'd-z'
defde
[root@centos7 ~]# echo abcde |tr 'a-c' 'xyz'
xyzde

# 如果set2对应的位数不及set1时,会用set2对应set1对应的最后一位补全set1替换位
[root@centos7 ~]# echo abcde |tr 'abcde' 'xyz'
xyzzz
[root@centos7 ~]# echo abcde |tr 'abcd' 'xyz'
xyzze

# 将第一字符集对应的字符转化为第二字符集对应的字符。
[root@centos7 ~]# echo abcde |tr -t 'abcd' 'xyz'
xyzde

# 用空格替换回车换行符\n
[root@centos7 ~]# ls /root/ |tr '\n' ' '

#处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
[root@centos7 ~]# echo "xt.,l 1 jr#'[:digit:]'mn2 c*/fe3 uz4" |tr -cd '[:digit:] \n'
1 2 3 4

#将path变量显示在独立的一行
[root@centos7 ~]# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos7 ~]# echo $path |tr ':' '\n'
/usr/lib64/qt-3.3/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin

 cut 根据指定的分隔符切片,显示出需要显示的片
  -d字符 指定分隔符
  -f数字 指定要显示的字段
  -c数字 显示指定数字的字符
    单个数字:一个字段
    多个离散字段:逗号分隔
    多个连续字段:-分隔
  --output-delimiter=string  指定输出结果的分隔符

演示:
[root@centos7 ~]# tail -5 /etc/passwd
memcached:x:990:985:memcached daemon:/run/memcached:/sbin/nologin
zabbix:x:989:984:zabbix monitoring system:/var/lib/zabbix:/sbin/nologin
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
tomcat:x:91:91:apache tomcat:/usr/share/tomcat:/bin/nologin
arclinux:x:1002:1002::/home/arclinux:/bin/bash

# 以":"为分隔符,取出第1列,第3列,第7列
[root@centos7 ~]# tail -5 /etc/passwd |cut -d: -f1,3,7
memcached:990:/sbin/nologin
zabbix:989:/sbin/nologinx
hacluster:189:/sbin/nologin
tomcat:91:/bin/nologin
arclinux:1002:/bin/bash

# 指定输出分隔符
[root@centos7 ~]# tail -5 /etc/passwd |cut -d: -f1,3,7 --output-delimiter=--
memcached--990--/sbin/nologin
zabbix--989--/sbin/nologin
hacluster--189--/sbin/nologin
tomcat--91--/bin/nologin
arclinux--1002--/bin/bash
[root@centos7 ~]# tail -5 /etc/passwd |cut -d: -f1,3,7 |tr ':' '--'
memcached-990-/sbin/nologin
zabbix-989-/sbin/nologin
hacluster-189-/sbin/nologin
tomcat-91-/bin/nologin
arclinux-1002-/bin/bash

# 按字符进行切割
[root@centos7 ~]# head -5 /etc/passwd |cut -c1-5
root:
bin:x
daemo
adm:x
lp:x:

 sort 文本排序,默认按assic码字符进行比较排序
  格式 sort[options] file
  -f 忽略大小写
  -r 逆序
  -n 对数字进行排序
  -t 指定分隔符
  -k数字 指定分隔后,按指定字段进行排序(与-t结合使用)
  -u 重复的行,只显示一行

演示:
[root@centos7 ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

# -t 指定分隔符,-k 指明字段,-n 按数值大小进行排序,-r 逆序排列
[root@centos7 ~]# head -5 /etc/passwd |sort -t: -k3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@centos7 ~]# head -5 /etc/passwd |sort -t: -k3 -nr
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

sort -u
[root@centos7 ~]# cut -d: -f7 /etc/passwd |sort
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/nologin
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/shutdown

# 除去连续重复的行,只保留一次
[root@centos7 ~]# cut -d: -f7 /etc/passwd |sort -u
/bin/bash
/bin/nologin
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/shutdown

# 实现的功能同sort -u
[root@centos7 ~]# cut -d: -f7 /etc/passwd |sort |uniq
/bin/bash
/bin/nologin
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/shutdown

[root@centos7 ~]# cut -d: -f7 /etc/passwd |sort -u |wc -l
6

  uniq 移除重复的行(默认不加参数重复的行显示一次)
  -c 统计每一行出现的次数
  -d 仅显示出现最少两次的行(显示重复的行一次)
  -u 仅显示不重复的行(重复的行直接不显示)

  注意:
  连续且完全相同的行为重复
  常和 sort 命令一起配合使用(sort -u和sort|uniq相同)
演示:
# 把文件中所有的非字母的用回车换行符“\n”替换并压缩,-c 为取[:alpha:]的补集,-s 为压缩
[root@centos7 ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n'
eq
success
base
startup
failure
base
startup
a
function
to
stop
a
program
killproc
local
rc
killlevel
base

# 将转换出来的结果排序,默认是按字符顺序排序
[root@centos7 ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n' |sort
is
is
is
is
it
it
it
it
it
it
its
kill
kill
kill
kill
kill
kill
kill
killlevel
killlevel
killlevel
killlevel
killlevel
killlevel
killlevel
killlevel
killproc
killproc
killproc
l
lang
langsh
langsh
langsh
let
lets
level
level

# uniq -c 去重并显示每行重复的次数
[root@centos7 ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n' |sort |uniq -c
9 user
1 using
2 usleep
4 usr
1 uu
2 v
13 var
6 verbose
4 via
5 warning
5 warning
1 whether
3 while
1 width
13 x
1 xcondrestart
1 xforce
1 xreload
1 xrestart
1 xstart
1 xstop
1 xtry
3 yes
2 yy
24 z

# 按重复的次数进行数值大小排序
[root@centos7 ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n' |sort |uniq -c |sort -n
1
1 aa
1 abnormally
1 strstr
1 substate
1 succeeded
1 sys
1 t
1 textdomain
1 true
1 txt
1 ulimit
1 unknown
1 unless
1 unset
1 used
1 useful
1 using
1 uu
1 whether
1 width
1 xcondrestart
2 startup
2 stop
2 style
2 sure
2 systemctl
2 term
2 they
2 this
2 tt
2 umask
2 up
2 update
2 usleep
3 killproc
3 langsh
3 lib
3 nicelevel
3 only
3 options
3 or
3 proc
3 restart
3 ret
3 sbin
3 serial
3 show
3 something
4 line
4 nicelevel
4 passed
4 plymouth
4 reload
4 shutdown
4 use
4 usr
5 test
5 that
5 warning
5 warning
6 c
6 continue
6 i
6 init
6 it
6 move
7 nice
7 not
7 prog
7 success
7 sysconfig
7 usage
8 cgroup
8 col
8 delay
8 killlevel
8 lock
8 pidof
8 running
9 do
9 done
9 else
9 failure
9 pidfile
10 rc
10 s
10 the
10 to
11 null
12 f
12 pids
13 color
13 o
13 program
13 run
13 var
13 x
14 bin
14 dev
14 shift
15 systemctl
16 etc
16 setcolor
16 sysctl
17 is
19 p
20 a
20 local
21 bootup
21 rc
23 d
23 in
24 z
29 base
33 n
45 fi
45 return
47 then
51 echo
54 file
55 if
67 pid

  paste 合并两个文件同行号的列到一行
  -d 指定分隔符,默认用tab
  -s 所有行合成一行显示
演示:
[root@centos7 ~]# cat /testdir/f1
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd
[root@centos7 ~]# cat /testdir/f2
anaconda-ks.cfg
desktop
discuz
documents

[root@centos7 ~]# paste /testdir/f1 /testdir/f2
aaaaaaaa anaconda-ks.cfg
bbbbbbbb desktop
cccccccc discuz
dddddddd documents

[root@centos7 ~]# paste -s /testdir/f1 /testdir/f2
aaaaaaaa bbbbbbbb cccccccc dddddddd
anaconda-ks.cfg desktop discuz documents

  diff 比较两个文件之间的区别
  diff命令的输出被保存在一种叫做"补丁"的文件中
  使用-u选项来输出"统一的(unified)"diff格式文件,最适用于补丁文件
  patch 复制对文件的改变
  patch命令复制在其它文件中进行的改变(要谨慎使用)
  用-b选项来自动备份改变了的文件

演示:
[root@centos7 ~]# cat /testdir/f1
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd
eeeeeeee
ffffffff

[root@centos7 ~]# cat /testdir/f2
aaaaaaaa
bbbbbbbb
cccccccc
ddddhhdd
eeeeeeee
fffffddd

# diff命令注明第4行和第6行不同
[root@centos7 ~]# diff /testdir/f1 /testdir/f2
4c4
< dddddddd
---
> ddddhhdd
6c6
< ffffffff
---
> fffffddd

# 备份恢复
[root@centos7 ~]# patch -b /testdir/f1 /testdir/diff.log
patching file /testdir/f1

[root@centos7 ~]# ls /testdir/
diff.log f1 f1.orig

[root@centos7 ~]# cat /testdir/f1 # 为原来的f2
aaaaaaaa
bbbbbbbb
cccccccc
ddddhhdd
eeeeeeee
fffffddd
[root@centos7 ~]# cat /testdir/f1.orig # 为原来的f1
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd
eeeeeeee
ffffffff

练习题:
1、找出ifconfig命令结果中本机的所有ipv4地址
[root@centos7 ~]# ifconfig
eno16777736: flags=4163<up,broadcast,running,multicast> mtu 1500
inet 192.168.1.113 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fed6:e460 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d6:e4:60 txqueuelen 1000 (ethernet)
rx packets 9063 bytes 6222807 (5.9 mib)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 3753 bytes 602301 (588.1 kib)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<up,loopback,running> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (local loopback)
rx packets 4 bytes 340 (340.0 b)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 4 bytes 340 (340.0 b)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@centos7 ~]# ifconfig |head -2
eno16777736: flags=4163<up,broadcast,running,multicast> mtu 1500
inet 192.168.1.113 netmask 255.255.255.0 broadcast 192.168.1.255

[root@centos7 ~]# ifconfig |head -2 |tail -1
inet 192.168.1.113 netmask 255.255.255.0 broadcast 192.168.1.255

[root@centos7 ~]# ifconfig |head -2 |tail -1 |tr ' ' ':'
::::::::inet:192.168.1.113::netmask:255.255.255.0::broadcast:192.168.1.255

[root@centos7 ~]# ifconfig |head -2 |tail -1 |tr -s ' ' ':'
:inet:192.168.1.113:netmask:255.255.255.0:broadcast:192.168.1.255

[root@centos7 ~]# ifconfig |head -2 |tail -1 |tr -s ' ' ':' |cut -d: -f3
192.168.1.113

2、查出分区空间使用率的最大百分比值
[root@centos7 ~]# df
文件系统 1k-块 已用 可用 已用% 挂载点
/dev/sda2 41922560 533688 41388872 2% /
devtmpfs 486140 0 486140 0% /dev
tmpfs 500664 0 500664 0% /dev/shm
tmpfs 500664 6836 493828 2% /run
tmpfs 500664 0 500664 0% /sys/fs/cgroup
/dev/sda3 20961280 3027236 17934044 15% /usr
/dev/sda1 496300 140512 355788 29% /boot
tmpfs 100136 0 100136 0% /run/user/0

[root@centos7 ~]# df |tr -s ' ' ':'
文件系统:1k-块:已用:可用:已用%:挂载点
/dev/sda2:41922560:533688:41388872:2%:/
devtmpfs:486140:0:486140:0%:/dev
tmpfs:500664:0:500664:0%:/dev/shm
tmpfs:500664:6836:493828:2%:/run
tmpfs:500664:0:500664:0%:/sys/fs/cgroup
/dev/sda3:20961280:3027236:17934044:15%:/usr
/dev/sda1:496300:140512:355788:29%:/boot
tmpfs:100136:0:100136:0%:/run/user/0

[root@centos7 ~]# df |tr -s ' ' ':' |cut -d: -f5
已用%
2%
0%
0%
2%
0%
15%
29%
0%

[root@centos7 ~]# df |tr -s ' ' ':' |cut -d: -f5 |tr -d '%'
已用
2
0
0
2
0
15
29
0

3、查出用户uid最大值的用户名、uid及shell类型
[root@centos7 ~]# getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin
nobody:x:99:99:nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:avahi ipv4ll stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd bus proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd network management:/:/sbin/nologin
dbus:x:81:81:system message bus:/:/sbin/nologin
polkitd:x:997:995:user for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
colord:x:996:994:user for colord:/var/lib/colord:/sbin/nologin
libstoragemgmt:x:995:992:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
rpc:x:32:32:rpcbind daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:172:172:realtimekit:/proc:/sbin/nologin
chrony:x:993:990::/var/lib/chrony:/sbin/nologin
tss:x:59:59:account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
geoclue:x:992:989:user for geoclue:/var/lib/geoclue:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
mysql:x:27:27:mariadb server:/var/lib/mysql:/sbin/nologin
pulse:x:171:171:pulseaudio system daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:rpc service user:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:anonymous nfs user:/var/lib/nfs:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:privilege-separated ssh:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
mageedu:x:1000:1000:mageedu:/home/mageedu:/bin/bash
apache:x:48:48:apache:/usr/share/httpd:/sbin/nologin
nginx:x:991:986:nginx user:/var/cache/nginx:/sbin/nologin
centos:x:1001:1001:centos,110101,110110,11223:/home/centos:/bin/bash
memcached:x:990:985:memcached daemon:/run/memcached:/sbin/nologin
zabbix:x:989:984:zabbix monitoring system:/var/lib/zabbix:/sbin/nologin
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
tomcat:x:91:91:apache tomcat:/usr/share/tomcat:/bin/nologin
arclinux:x:1002:1002::/home/arclinux:/bin/bash

# 取出要求的字段列
[root@centos7 ~]# getent passwd |cut -d: -f1,3,7
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin
operator:11:/sbin/nologin
games:12:/sbin/nologin
ftp:14:/sbin/nologin
nobody:99:/sbin/nologin
avahi-autoipd:170:/sbin/nologin
systemd-bus-proxy:999:/sbin/nologin
systemd-network:998:/sbin/nologin
dbus:81:/sbin/nologin
polkitd:997:/sbin/nologin
abrt:173:/sbin/nologin
colord:996:/sbin/nologin
libstoragemgmt:995:/sbin/nologin
setroubleshoot:994:/sbin/nologin
rpc:32:/sbin/nologin
rtkit:172:/sbin/nologin
chrony:993:/sbin/nologin
tss:59:/sbin/nologin
geoclue:992:/sbin/nologin
usbmuxd:113:/sbin/nologin
mysql:27:/sbin/nologin
pulse:171:/sbin/nologin
gdm:42:/sbin/nologin
rpcuser:29:/sbin/nologin
nfsnobody:65534:/sbin/nologin
postfix:89:/sbin/nologin
sshd:74:/sbin/nologin
ntp:38:/sbin/nologin
tcpdump:72:/sbin/nologin
mageedu:1000:/bin/bash
apache:48:/sbin/nologin
nginx:991:/sbin/nologin
centos:1001:/bin/bash
memcached:990:/sbin/nologin
zabbix:989:/sbin/nologin
hacluster:189:/sbin/nologin
tomcat:91:/bin/nologin
arclinux:1002:/bin/bash

# 以":"为分隔符,第二个字段,进行数值大小排序
[root@centos7 ~]# getent passwd |cut -d: -f1,3,7 |sort -t: -k2n
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin
operator:11:/sbin/nologin
games:12:/sbin/nologin
ftp:14:/sbin/nologin
mysql:27:/sbin/nologin
rpcuser:29:/sbin/nologin
rpc:32:/sbin/nologin
ntp:38:/sbin/nologin
gdm:42:/sbin/nologin
apache:48:/sbin/nologin
tss:59:/sbin/nologin
tcpdump:72:/sbin/nologin
sshd:74:/sbin/nologin
dbus:81:/sbin/nologin
postfix:89:/sbin/nologin
tomcat:91:/bin/nologin
nobody:99:/sbin/nologin
usbmuxd:113:/sbin/nologin
avahi-autoipd:170:/sbin/nologin
pulse:171:/sbin/nologin
rtkit:172:/sbin/nologin
abrt:173:/sbin/nologin
hacluster:189:/sbin/nologin
zabbix:989:/sbin/nologin
memcached:990:/sbin/nologin
nginx:991:/sbin/nologin
geoclue:992:/sbin/nologin
chrony:993:/sbin/nologin
setroubleshoot:994:/sbin/nologin
libstoragemgmt:995:/sbin/nologin
colord:996:/sbin/nologin
polkitd:997:/sbin/nologin
systemd-network:998:/sbin/nologin
systemd-bus-proxy:999:/sbin/nologin
mageedu:1000:/bin/bash
centos:1001:/bin/bash
arclinux:1002:/bin/bash
nfsnobody:65534:/sbin/nologin

# 取最后一行
[root@centos7 ~]# getent passwd |cut -d: -f1,3,7 |sort -t: -k2n |tail -1
nfsnobody:65534:/sbin/nologin

4、查出/tmp的权限,以数字方式显示
[root@centos6 ~]# stat /tmp
file: `/tmp'
size: 4096 blocks: 8 io block: 4096 directory
device: fd00h/64768d inode: 1048577 links: 6
access: (1777/drwxrwxrwt) uid: ( 0/ root) gid: ( 0/ root)
access: 2017-02-12 09