正則表達式grep及其他文本處理命令練習
上課練習 1
1、centos 6找出ifconfig命令結果中本機的IPv4地址
[root@qzx ~]# ifconfig|head -n 2|tail -n 1|tr -s ' [:alpha:]' ':'|cut -d: -f2 10.1.253.752、查出分區空間使用率的最大百分比值
[root@qzx ~]# df | tr -s ' ' '%'|cut -d % -f 5|sort -n |tail -1 523、查出用戶UID最大值的用戶名、UID及shell類型
[root@qzx ~]# cat /etc/passwd | sort -n -t : -k 3 | tail -1|cut -d : -f 1,3,7 nfsnobody:65534:/sbin/nologin4、查出/tmp的權限,以數字方式顯示
[root@qzx ~]# stat /tmp File: `/tmp' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 803h/2051d Inode: 389379 Links: 9 Access: (7777/drwsrwsrwt) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-05 22:09:27.860003287 +0800 Modify: 2016-08-05 22:09:21.807002986 +0800 Change: 2016-08-05 22:09:21.807002986 +0800 [root@qzx ~]# stat /tmp | tail -n +4|head -n 1 |cut -d / -f1|tr -cd '[0-9]' 77775、統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序
[root@qzx ~]# netstat -ant | tr -s " " |cut -d " " -f5|tail -n +3 |sort :::* :::* :::* :::* :::* :::* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 10.1.250.28:49373
grep命令上課練習
1、顯示/proc/meminfo文件中以大小s開頭的行;(要求:使用兩種方式)
[root@qzx ~]# grep -i '^s' /proc/meminfo SwapCached: 0 kB SwapTotal: 4194300 kB SwapFree: 4194300 kB Shmem: 1288 kB Slab: 127444 kB SReclaimable: 60952 kB SUnreclaim: 66492 kB [root@qzx ~]# grep '^[sS]' /proc/meminfo SwapCached: 0 kB SwapTotal: 4194300 kB SwapFree: 4194300 kB Shmem: 1288 kB Slab: 127408 kB SReclaimable: 60952 kB SUnreclaim: 66456 kB [root@qzx ~]# grep -E '^(s|S)' /proc/meminfo SwapCached: 0 kB SwapTotal: 4194300 kB SwapFree: 4194300 kB Shmem: 1288 kB Slab: 127420 kB SReclaimable: 60956 kB SUnreclaim: 66464 kB2、顯示/etc/passwd文件中不以/bin/bash結尾的行
[root@qzx ~]# grep -v '/bin/bash' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync3、顯示用戶rpc默認的shell程序
[root@qzx ~]# grep '^rpc\>' /etc/passwd rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin4、找出/etc/passwd中的兩位或三位數
[root@qzx ~]# grep '\<[[:digit:]]\{2,3\}\>' /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin5、顯示/etc/grub2.cfg文件中,至少以一個空白字符開頭的且后面存非空白字符的行
[root@localhost ~]# grep '^[[:space:]]\+[^[:space:]]' /etc/grub2.cfg load_env set default="${next_entry}" set next_entry=6、找出“netstat -tan”命令的結果中以‘LISTEN’后跟任意多個空白字符結尾的行
[root@localhost ~]# netstat -tan| grep 'LISTEN[[:space:]]*' tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN7、添加用戶bash、testbash、basher以及nologin(其shell為/sbin/nologin),而后找出/etc/passwd文件中用戶名同shell名的行
[root@qzx ~]# grep '\(^[[:alnum:]]\+\>\).*\1\>$' /etc/passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt bash:x:4329:4330::/home/bash:/bin/bash nologin:x:4332:4333::/home/nologin:/sbin/nologin
egrep上課練習
1、顯示三個用戶root、mage、wang的UID和默認shell
[root@qzx ~]# egrep '^(root)|(mage)|(wang)' /etc/passwd |cut -d : -f3,7 0:/bin/bash 4333:/bin/bash 4334:/bin/bash2、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行
[root@qzx ~]# egrep '[[:alpha:]_]+\(\)' /etc/rc.d/init.d/functions fstab_decode_str() { checkpid() { __readlink() { __fgrep() { __kill_pids_term_kill_3、使用egrep取出/etc/rc.d/init.d/functions中其基名
[root@qzx ~]# echo /etc/rc.d/init.d/functions | egrep -o '[^/]+/?$' functions4、使用egrep取出上面路徑的目錄名
[root@qzx ~]# echo "/etc/re.d/init.d/functions" | egrep -o "/.+/" /etc/re.d/init.d/5、統計以root身份登錄的每個遠程主機IP地址的登錄次數
[root@qzx ~]# last |egrep '^root.*[[:digit:]\.]{3}[[:digit:]]'|tr -s ' '|cut -d " " -f 3|sort |uniq -c 11 10.1.250.28 1 172.18.18.245 2 172.18.19.1226、利用擴展正則表達式分別表示0-9、10-99、100-199、200-249、250-255
'[0-9]'
[1-9][0-9]
1[0-9]{2}
2[0-4][0-9]
25[0-5]7、顯示ifconfig命令結果中所有IPv4地址
[root@qzx ~]# ifconfig | egrep -o '([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'10.1.253.75 10.1.255.255 255.255.0.0 127.0.0.1 255.0.0.0
課下思考題
統計/etc/init.d/functions 文件中每個單詞出現的次數,并按頻率從高到低顯示
[root@qzx ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n' |sort|uniq -c|sort -n. . . 73 echo 75 pid 77 then 83 if正則表達式表示身份證號
egrep -o '([[:digit:]]{17}X)|([[:digit:]]{18})'測試:
[root@qzx ~]# echo 12345678912345678X |egrep -o '([[:digit:]]{17}X)|([[:digit:]]{18})' 12345678912345678X [root@qzx ~]# echo 123456789123456780 |egrep -o '([[:digit:]]{17}X)|([[:digit:]]{18})' 123456789123456780正則表達式表示手機號
1[3,5][0-9]{9} 18[1,2,3,6,7,8,9][0-9]{8} [root@qzx ~]# echo 18888397111.232565 |egrep -o '1[3,5][0-9]{9}|18[1,2,3,6,7,8,9][0-9]{8}'18888397111 [root@qzx ~]#正則表達式表示郵箱
egrep -o '[[:alnum:]_]+@[[:alnum:]]+\.com\>'測試
[root@qzx ~]# echo 'sdas a, a.sd . .e.asfafgah_dasAAD12@163.com.asda.sfd .sdsee' |egrep '[[:alnum:]_]+@[[:alnum:]]+\.com\>' sdas a, a.sd . .e.asfafgah_dasAAD12@163.com.asda.sfd .sdsee [root@qzx ~]# echo 'sdas a, a.sd . .e.asfafgah_dasAAD12@163.com.asda.sfd .sdsee' |egrep -o '[[:alnum:]_]+@[[:alnum:]]+\.com\>' asfafgah_dasAAD12@163.com正則表達式表示QQ號
egrep -o [1-9][0-9]{5,10}
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/30129