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 22:07
下一篇 2016-08-07 22:07

相关推荐

  • 用户组管理系列(二):权限设置

    1、权限简介    操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可…

    Linux干货 2016-08-05
  • Python from entry to abandon 3

        第十章的内容是解决问题————编写一个Python脚本。在我的电脑上因为Zip命令不能正常工作所以无法给出演示。该章给出了很有意义的编程思路,对以后学习和工作都有不错的参考意义,这部分有兴趣的同学还是自己去看原版教程吧。    这篇博客结合个人笔记整理了《简明Python教程》第十一章到第十…

    Linux干货 2017-04-07
  • linux学习笔记: shell脚本编程相关(上)

    前言 unix/linux操作系统下的shell,是一种壳,其目的是提供一个用户与计算机相互交互的命令接口,通过输入各种命令,达到操作的目的。 与此同时,shell支持控制流程,进而可以组合出各种各样的应用实例。 shell脚本的格式  首行shebang机制:  bash脚本,首行添加#!/bin/bash&nbsp…

    Linux干货 2017-04-18
  • linux筛选数据和用户基本操作

    linux筛选数据的基本操作 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。   [root@localhost script]# who   chenjianhang tty1      …

    Linux干货 2016-10-17
  • 脚本初学者

    期待已久的脚本终于在这一周学到了,对于脚本,我感觉就是有两点,第一:考验一个人的思维能力,如果能把你想要的结果用脚本正确的表示出来。第二:以前学的基础命令,怎么组合起来使用。达到以上两点,再难写的脚本都可以写出来的。 一、编写,执行一个脚本        脚本的格式  &nbsp…

    2017-08-05
  • apache自动化脚本搭建虚拟主机

    1 基于主机名实现三个虚拟主机 (1).创建网站目录与测试文件 (2).创建虚拟主机文件(目录为/etc/httpd/conf.d/下)   (3).修改测试apache主机hosts文件(就不用DNS服务器解析,方便测试),测试httpd配置文件是否有问题,重启httpd服务   (4)修改测试主机hosts文件(就不用DNS服务器解析…

    Linux干货 2016-10-09