第一部分、使用基本的文本處理工具(非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.www58058.com/31221