第一部分、使用基本的文本处理工具(非grep)练习以下5题。
1、找出ifconfig命令结果中本机的所有IPv4地址
[root@localhost ~]# ifconfig |head -2 |tail -1 inet 172.18.18.204 netmask 255.255.255.0 broadcast 172.18.18.255 [root@localhost ~]# ifconfig |head -2 |tail -1 |tr -s " " ":" :inet:172.18.18.204:netmask:255.255.255.0:broadcast:172.18.18.255 [root@localhost ~]# ifconfig |head -2 |tail -1 |tr -s " " ":"|cut -d: -f3 172.18.18.204
2、查出分区空间使用率的最大百分比值
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 100G 4.0G 97G 4% / devtmpfs 899M 0 899M 0% /dev tmpfs 913M 88K 913M 1% /dev/shm tmpfs 913M 9.0M 904M 1% /run tmpfs 913M 0 913M 0% /sys/fs/cgroup /dev/sda5 20G 33M 20G 1% /testdir /dev/sda1 197M 139M 59M 71% /boot tmpfs 183M 8.0K 183M 1% /run/user/0 /dev/sr0 7.3G 7.3G 0 100% /run/media/root/CentOS 7 x86_64 [root@localhost ~]# df -h |tr -s " " ":" Filesystem:Size:Used:Avail:Use%:Mounted:on /dev/sda2:100G:4.0G:97G:4%:/ devtmpfs:899M:0:899M:0%:/dev tmpfs:913M:88K:913M:1%:/dev/shm tmpfs:913M:9.0M:904M:1%:/run tmpfs:913M:0:913M:0%:/sys/fs/cgroup /dev/sda5:20G:33M:20G:1%:/testdir
/dev/sda1:197M:139M:59M:71%:/boot tmpfs:183M:8.0K:183M:1%:/run/user/0 /dev/sr0:7.3G:7.3G:0:100%:/run/media/root/CentOS:7:x86_64 [root@localhost ~]# df -h |tr -s " " ":"|cut -d: -f5 Use% 4% 0% 1% 1% 0% 1% 71% 1% 100% [root@localhost ~]# df -h |tr -s " " ":"|cut -d: -f5|sort -nr 100% 71% 4% 1% 1% 1% 1% Use% 0% 0% [root@localhost ~]# df -h |tr -s " " ":"|cut -d: -f5|sort -nr |head -1 100%
3、查出用户UID最大值的用户名、 UID及shell类型
[root@localhost ~]# 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 colord:996:/sbin/nologin abrt:173:/sbin/nologin tss:59:/sbin/nologin unbound:995:/sbin/nologin usbmuxd:113:/sbin/nologin saslauth:994:/sbin/nologin libstoragemgmt:993:/sbin/nologin geoclue:992:/sbin/nologin rpc:32:/sbin/nologin setroubleshoot:991:/sbin/nologin rtkit:172:/sbin/nologin pulse:171:/sbin/nologin gdm:42:/sbin/nologin rpcuser:29:/sbin/nologin nfsnobody:65534:/sbin/nologin radvd:75:/sbin/nologin qemu:107:/sbin/nologin chrony:990:/sbin/nologin mysql:27:/sbin/nologin gnome-initial-setup:989:/sbin/nologin avahi:70:/sbin/nologin postfix:89:/sbin/nologin sshd:74:/sbin/nologin ntp:38:/sbin/nologin tcpdump:72:/sbin/nologin andy:1000:/bin/bash laowang:1001:/bin/bash [root@localhost ~]# getent passwd |cut -d: -f1,3,7 |sort -t: -k2 -n 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 tss:59:/sbin/nologin avahi:70:/sbin/nologin tcpdump:72:/sbin/nologin sshd:74:/sbin/nologin radvd:75:/sbin/nologin dbus:81:/sbin/nologin postfix:89:/sbin/nologin nobody:99:/sbin/nologin qemu:107:/sbin/nologin usbmuxd:113:/sbin/nologin avahi-autoipd:170:/sbin/nologin pulse:171:/sbin/nologin rtkit:172:/sbin/nologin abrt:173:/sbin/nologin gnome-initial-setup:989:/sbin/nologin chrony:990:/sbin/nologin setroubleshoot:991:/sbin/nologin geoclue:992:/sbin/nologin libstoragemgmt:993:/sbin/nologin saslauth:994:/sbin/nologin unbound:995:/sbin/nologin colord:996:/sbin/nologin polkitd:997:/sbin/nologin systemd-network:998:/sbin/nologin systemd-bus-proxy:999:/sbin/nologin andy:1000:/bin/bash laowang:1001:/bin/bash nfsnobody:65534:/sbin/nologin [root@localhost ~]# getent passwd |cut -d: -f1,3,7 |sort -t: -k2 -n|tail -1 nfsnobody:65534:/sbin/nologin
4、查出/tmp的权限,以数字方式显示
[root@localhost ~]# stat /tmp File: ‘/tmp’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 802h/2050dInode: 133 Links: 16 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:tmp_t:s0 Access: 2016-08-06 03:28:34.193156514 -0400 Modify: 2016-08-07 22:42:52.743218461 -0400 Change: 2016-08-07 22:42:52.743218461 -0400 Birth: - [root@localhost ~]# stat /tmp|head -4 |tail -1 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) [root@localhost ~]# stat /tmp|head -4 |tail -1|cut -d "/" -f1 Access: (1777 [root@localhost ~]# stat /tmp|head -4 |tail -1|cut -d "/" -f1|cut -d"(" -f2 1777 [root@localhost ~]# netstat -nt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 172.18.18.204:22 172.18.18.205:60913 TIME_WAIT tcp 0 0 172.18.18.204:22 172.18.18.205:60912 ESTABLISHED tcp 0 0 172.18.18.204:22 172.18.18.205:60911 ESTABLISHED tcp 0 0 172.18.18.204:22 172.18.18.205:60916 ESTABLISHED tcp 0 0 172.18.18.204:22 172.18.18.205:60920 ESTABLISHED tcp 0 52 172.18.18.204:22 172.18.18.205:55889 ESTABLISHED tcp 0 0 172.18.18.204:22 172.18.18.205:60918 ESTABLISHED [root@localhost ~]# netstat -nt |tr -s " " ":" Active:Internet:connections:(w/o:servers) Proto:Recv-Q:Send-Q:Local:Address:Foreign:Address:State: tcp:0:0:172.18.18.204:22:172.18.18.205:60912:ESTABLISHED tcp:0:0:172.18.18.204:22:172.18.18.205:60911:ESTABLISHED tcp:0:0:172.18.18.204:22:172.18.18.205:60916:ESTABLISHED tcp:0:0:172.18.18.204:22:172.18.18.205:60920:ESTABLISHED tcp:0:52:172.18.18.204:22:172.18.18.205:55889:ESTABLISHED tcp:0:0:172.18.18.204:22:172.18.18.205:60918:ESTABLISHED [root@localhost ~]# netstat -nt |tr -s " " ":"|cut -d: -f6 Foreign 172.18.18.205 172.18.18.205 172.18.18.205 172.18.18.205 172.18.18.205 172.18.18.205 [root@localhost ~]# netstat -nt |tr -s " " ":"|cut -d: -f6|uniq -c 1 1 Foreign 6 172.18.18.205
第二部分、使用文本处理工具(grep)练习以下7题。
1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)
2、显示/etc/passwd文件中不以/bin/bash结尾的行
3、显示用户rpc默认的shell程序
4、找出/etc/passwd中的两位或三位数
5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行
6、 找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结尾的行
7、添加用户bash、 testbash、 basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行
第三部分、使用扩展正则表达式(egrep)练习以下7题。
1、 显示三个用户root、 mage、 wang的UID和默认shell
2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行。
3、使用egrep取出/etc/rc.d/init.d/functions中其基名
4、使用egrep取出/etc/rc.d/init.d/functions的目录名
5、统计以root身份登录的每个远程主机IP地址的登录次数
6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
0-9:[0-9]
10-99:[1-9][0-9]
100-199:1[0-9]{2}
200-249:2[0-4][0-9]
250-255:25[0-5]
7、显示ifconfig命令结果中所有IPv4地址
第四部分、课后作业
1、取各分区利用率的数值
2、统计/etc/init.d/functions 文件中每个单词出现的次数,并按频率从高到低显示
3、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/functions/" 取目录名
4、正则表达式表示身份证号
1: [1-9]———————————————第一位不能为0开头
2-6: [0-9]{5}
78: (19|20|21)————————————- 出生年份前两位
9-10 [0-9]{2}—————————————-出生年份后两位
11-12 ((0[1-9])|11|12)——————————出生月份
13-14 ((0[1-9])|([12][0-9])|(3[0-1]))————-出生日
15-17 [0-9]{3}
18 [0-9X]——————————————-最后一位可能为x
egrep "\<[1-9][0-9]{5}(19|20|21)[0-9]{2}((0[1-9])|(10|11|12))((0[1-9])|([12][0-9])|(3[0-1]))[0-9]{3}[0-9Xx]\>"
5、正则表达式表示手机号
第一位 1
第二位 3、4、5、7、8
egrep "\<1[34578][0-9]{9}\>"
6、正则表达式表示邮箱
egrep "^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$"
或者 egrep -o "\<[[:alnum:]_\-]+\.?[[:alnum:]]+@([[:alnum:]_\-]+\.)+(com|cn|edu|org|net|gov)\.?\>"
7、正则表达式表示QQ号
egrep "\<[1-9][0-9]{4,11}\>"
原创文章,作者:AndyIvanXue,如若转载,请注明出处:http://www.178linux.com/31221