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

相关推荐

  • puppet部署多台服务器

    利用puppet实现自动化部署 配置前准备:   图中:蓝线表示各个服务器之间通信      红线表示puppetmaster主机向各个agent主机部署信道 A主机puppet-master主机:192.168.126.129 B主机做两种服务:keepalived高性能和nginx反代  &nb…

    2017-07-23
  • 21期第一周网络练习作业

    计算机的组成部分及功能 由运算器、控制器、存储器、输入设备和输出设备组成 其中运算器负责数据的算术运算和逻辑运算,即数据的加工处理;   控制器负责对控制信息进行分析,控制并协调输入、输出操作或内存、外存访问;   存储器用来存放计算程序及参与运算的各种数据,实现类似人脑记忆功能的部件,分为内存和外存;  &…

    Linux干货 2016-07-12
  • Linux网络属性配置

      一台主机想要接入网络就必须配置相关的网络属性,如:主机名、IP地址、子网掩码、网关、DNS等,下面总结了网络属性的配置方法。 一、配置主机名   主机名配置有两种方式:命令和配置文件。   1、hostname命令    可以使用hostname命令来配置主机名,不过这样配置的主机名不会永久生效,只能在当…

    Linux干货 2016-01-06
  • Elasticsearch 5.0 集群

    IT运维 www.chinasa.net 下载地址:https://www.elastic.co/downloads/elasticsearch 1、JDK 安装略过 node1 部署 2、Elasticsearch安装 #tar zxvf elasticsearch-5.0.0.tar.gz -C /opt/ #cd /opt #mv elast…

    系统运维 2016-12-27
  • 搜索引擎-网络爬虫

     通用搜索引擎的处理对象是互联网网页,目前网页数量以百亿计,搜索引擎的网络爬虫能够高效地将海量的网页数据传下载到本地,在本地 形成互联网网页的镜像备份。它是搜索引擎系统中很关键也很基础的构件。 1. 网络爬虫本质就是浏览器http请求。      浏览器和网络爬虫是两种不同的网络客户端,都以相同的方式来获取网…

    Linux干货 2015-11-18
  • 自用vim环境参数设置

    基本显示设置 set nu mber 显示行号 syntax on 语法高亮 set cursorline 用浅色高亮当前行 set ruler 显示标尺 set showcmd 输入的命令显示出来,看的清楚些 set cmdheight=1 命令行(在状态行下)的高度,设置为1 set tabst…

    Linux干货 2017-04-24