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.178linux.com/29752

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

相关推荐

  • 马哥Linux学习之查询篇(命令查询和文件查询)

        Linux运维工作一般都使用命令完成,在如此多的各种命令中,要想全部记住显然是不太可能也是不必要的,另外,文件的查找在日常操作中也是必不可少的。下面我就总结一下Linux中如何查找命令以及文件。     命令的运行文件路径查询。这个查找的方法是同样是使用命令,这个命令叫w…

    Linux干货 2015-04-13
  • DNS简单概念 一

    DNS简单概念 一 DNS简单概念 一 1 §·主机角色 1 §·DNS服务器的类型: 1 §·DNS中简单术语 2 §·DNS中资源记录及其类型 2 §·DNS域与区域 4 §·BIND安全设置 5 §·BIND高级设置BIND VIEW 6   §·主机角色 在网络上不同的主机有不同的角色, 比如: DNS解析角色,邮件角色,网页服务器 §·D…

    Linux干货 2016-09-26
  • 脚本的进阶与一些基本脚本

    1,脚本中用于表示数字大小写和符号为: -gt(大于)-lt(小于)-ne(不等于)-eq(等于) 格式为 [[空格 ”符号”空格]] 2,测试文件类型的选项 -f(是否为普通文件)-l(是否为链接文件)-d(是否为目录)-e(单独测试文件是否存在) 3,if语句的格式:(其中path代表条件,elif链接多个条件,最后一个条件用else表示) if pat…

    Linux干货 2017-05-22
  • http2

    练习:     (1)基于主机名实现三个虚拟主机     (2) 每虚拟主机使用独立的访问日志和错误日志     (3) 第三个虚拟主机的/admin要进行用户访问认证     (4) 在第二个虚拟主…

    Linux干货 2016-10-09
  • 文件、目录练习

    将/etc/issue文件的内容转换为大写保存到/tmp/issue.out文件中: 将当前系统登录用户信息转换为大写后保存至/tmp/who.out文件中: 将/root/下文件列表,显示成一行,文件名之间用空格隔开: file1文件的内容为“1 2 3 4 5 6 7 8 9 10”计算出所有数字的总和: 处理字符串“xt.,| 1 jr#!$mn 2 …

    Linux干货 2016-08-05
  • tar,cpio,rpm,yum的使用详解(适合初学者)

    基于linux下的tar包管理和yum源配置 友情提示:对于这些实际操作的,还是需要进行手工的尝试,由于这几个对于包管理的是比较常用和实用的, 所以,一定要熟练使用。 1.tar tar是对于系统中文件,目录等进行打包,解包的工具。tar也可以对文件进行打包存放到别的目录下, 所以在很早的时候,一些老的工程师经常使用tar对文件进行备份。很大程度上,所谓的t…

    Linux干货 2016-08-21