Linux正則表達式及grep練習題

Linux正則表達式及grep練習題

    

    1、找出ifconfig命令結果中本機的所有IPv4地址

        # ifconfig|grep -E -o "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"

        1.png

    2、查出分區空間使用率的最大百分比值

        # df |grep "/dev/[sh]d"|tr -s ' ' '%'|cut -d"%" -f5|sort -nr|head -1

        2.png

    3、查出用戶UID最大值的用戶名、 UID及shell類型

        # sort -t: -k3 -nr /etc/passwd|head -1|cut -d: -f1,3,7

        3.png

    

    4、查出/tmp的權限,以數字方式顯示

        # stat /tmp |grep '('|cut -d"(" -f2|cut -d"/" -f1

        4.png

    5、統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序

        # netstat -tn|grep "tcp"|tr -s ' '|cut -d" " -f5|cut -d: -f1|sort -t"." -k4|uniq -c|sort -nr

        5.png

    6、顯示/proc/meminfo文件中以大小s開頭的行; (要求:使用兩種方式)

        # grep -i "^s" /proc/meminfo

        # grep "^[Ss]" /proc/meminfo

        6.png

    7、顯示/etc/passwd文件中不以/bin/bash結尾的行

        # grep -v "/bin/bash$" /etc/passwd

        blob.png

    8、顯示用戶rpc默認的shell程序

        # grep "^rpc:" /etc/passwd|cut -d: -f7

        blob.png

    9、找出/etc/passwd中的兩位或三位數

        # grep -o "\<[1-9][0-9]\{1,2\}\>" /etc/passwd|sort -nr|uniq

        blob.png

    10、顯示/etc/grub2.cfg文件中,至少以一個空白字符開頭的且后面存非空白字符的行

        # grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg

        blob.png

    11、 找出“netstat -tan”命令的結果中以‘LISTEN’后跟任意多個空白字符結尾的行

        # netstat -tan|grep "LISTEN[[:space:]]*$"

        blob.png

    12、添加用戶bash、 testbash、 basher以及nologin(其shell為/sbin/nologin),而后找出/etc/passwd文件中用戶名同shell名

    的行

        # grep "^\([[:alnum:]]\+\>\).*\1$" /etc/passwd

        blob.png

    13、 顯示三個用戶root、 mage、 wang的UID和默認shell

        # egrep "^((root)|(mage)|(wang)\>)" /etc/passwd

        blob.png

    14、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行

        # egrep "^[[:alpha:]_]+\(\)" /etc/rc.d/init.d/functions

        blob.png        

    

    15、使用egrep取出/etc/rc.d/init.d/functions中其基名

        # echo  "/etc/rc.d/init.d/functions" |grep -o "[^/]\+/\?$"

        blob.png

    16、使用egrep取出上面路徑的目錄名

        # echo  "/etc/rc.d/init.d/functions" |egrep -o "^/.*/"

        blob.png

    17、統計以root身份登錄的每個遠程主機IP地址的登錄次數

        # last|egrep "^root.*(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).*"|tr -s " "|cut -d" " -f3|uniq -c

        blob.png 

    18、利用擴展正則表達式分別表示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]

    19、取本機IP地址

        # ifconfig|grep "Bcast"|cut -d":" -f2|cut -d" " -f1

        blob.png        

    20、取各分區利用率的數值

        # df |grep "/dev/[sh]d"|tr -s ' ' '%'|cut -d% -f5|sort -nr

        blob.png 

    

    21、統計/etc/init.d/functions 文件中每個單詞出現的次數,并按頻率從高到低顯示

        # cat /etc/init.d/functions |tr -c "[:alpha:] \n" " "|tr -s " " "\n"|sort|uniq -c|sort -nr

        blob.png

    

    22、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/functions/"  取目錄名

        # echo "/etc/rc.d/init.d/functions"|sed  's@[^/]\+/\?$@@'

        blob.png

    23、正則表達式表示身份證號

        1:     [1-9]

        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]

        # 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]\>" 

        blob.png

    24、正則表達式表示手機號

        分析:

            第一位 1

            第二位 3、4、5、7、8

        egrep "\<1[34578][0-9]{9}\>"

    25、正則表達式表示郵箱

        egrep -o  "\<[[:alnum:]_\-]+\.?[[:alnum:]]+@([[:alnum:]_\-]+\.)+(com|cn|edu|org|net|gov)\.?\>"

        blob.png 

    26、正則表達式表示QQ號

        # egrep "\<[1-9][0-9]{4,11}\>"

        blob.png

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/29752

(0)
M20-1倪文超M20-1倪文超
上一篇 2016-08-07 22:07
下一篇 2016-08-07 22:07

相關推薦

  • N23-北京-阿來

           我是阿來,我參加了馬哥Linux運維網絡班,從2016年9月開始我將跟隨馬哥學習Linux技術。我的學習宣言是:學習的路,就在腳下,一步一個腳印,領路的人,就這這里,一天一點進步!

    Linux干貨 2016-09-12
  • 數組和字符串處理

    數組:存儲多個元素的連續的內存空間,相當于多個變量的集合     1)定義數組:        declare -a ARRAY_NAME 定義普通數組 可省略declare -a ]#arr=(a b&nbs…

    Linux干貨 2016-08-24
  • Linux磁盤配額

    磁盤配額 什么是磁盤配額? 磁盤配額(Quota)是Linux系統中由于是多用戶、多任務的環境,所以會有多用戶共同使用一個硬盤空間的情況發生,如果其中少數幾個用戶大量占掉了磁盤空間的話,那肯定影響其他用戶的使用權限。因此我們就需要對每個用戶限制硬盤使用空間,來避免此種情況的發生,這就是磁盤配額。 Quota的一般用途: *針對WWW server,例如:每個…

    Linux干貨 2016-09-01
  • Centos7 服務器部署ssh證書授權登錄

    在當前服務器生成密鑰對 ssh-keygen –t rsa –P ” ssh-keygen –t rsa –P ''[root@localhost ~]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key …

    Linux干貨 2016-12-05
  • linux系統的路由功能

    1、概要    大家應該都明白,不同網段的報文包傳播,是需要路由的轉發轉發功能的,那么,一個linux操作系統能不能充當路由器呢?下面不妨來驗證一下。 2、網絡拓撲 3、實現過程    <1>倆個centos6分別充當Router1和Router2。并添加足夠的網卡。    <2&…

    Linux干貨 2016-09-06
欧美性久久久久