博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.4grep及egrep的用法
阅读量:6532 次
发布时间:2019-06-24

本文共 2427 字,大约阅读时间需要 8 分钟。

hot3.png

        练习:

            1、显示/proc/meminfo文件中以大写或小写S开头的行;
            # grep -i '^s' /proc/meminfo
            # grep '^[Ss]' /proc/meminfo

            # grep -E '^(S|s)' /proc/meminfo

            2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

            # grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

            3、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

                进一步:仅显示上述结果中其ID号最大的用户;
            # grep "/bin/bash$" /etc/passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1               

            4、找出/etc/passwd文件中的一位数或两位数;

            # grep "\<[0-9][0-9]\?\>" /etc/passwd
            # grep "\<[0-9]\{1,2\}\>" /etc/passwd

            5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

            # grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf

            6、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

            # grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit

            7、找出netstat -tan命令执行结果中以'LISTEN'结尾的行;

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

            8、添加用户bash, testbash, basher, nologin(SHELL为/sbin/nologin),而找出当前系统上其用户名和默认shell相同的用户;

            # grep "^\([[:alnum:]]\{1,\}\):.*\1$" /etc/passwd
            #grep "^\<\([[:alnum:]]*\)\>.*\1$" /etc/passwd

            9、扩展题:新建一个文本文件,假设有如下内容:

                He like his lover.
                He love his lover.
                He like his liker.
                He love his liker.
            找出其中最后一个单词是由此前某单词加r构成的行。
                \(l..e\).*\1r     [root@linux_basic ~]#grep "\<\(....\)\>.*\1r" hello

        扩展正则表达式:

            字符匹配:
                .
                []
                [^]
            次数匹配:
                *:匹配其前字符任意次
                ?: 匹配其前字符0次或1次
                +: 匹配其前字符至少1次;
                {m}: 匹配其前字符精确匹配m次
                {m,n}: 匹配其前字符至少m次,至多n次
                {m,}
                {0,n}
            锚定:
                ^
                $
                \<, \b
                \>, \b
                ^$, ^[[:space:]]*$
            分组:
                ()

                引用:\1, \2, \3

            或者:

                a|b: a或者b
                    con(C|c)at
                        concat或conCat?
                    conC|cat          conC或cat  

            grep -E  'PATTERN' FILE...

            egrep 'PATTERN' FILE...

            练习:使用扩展的正则表达式

            10、显示当前系统上root、fedora或user1用户的默认shell;
            # grep -E "^(root|fedora|user1):" /etc/passwd | cut -d: -f7

            11、找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“()”行;

            # grep -o -E "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions
            #grep -o "\<[[:alnum:]]\{1,\}\>()" /etc/rc.d/init.d/functions
            # grep -o -E "\<[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions

[root@linux_basic ~]#echo "/etc/rc.d/init.d/" | grep -o -E "[^/].+/$"   .  这里是任意单个字符

etc/rc.d/init.d/
[root@linux_basic ~]#echo "/etc/rc.d/init.d/" | grep -o -E "[^/]+/?$"
init.d/

            12、使用echo命令输出一个路径,而后使用grep取出其基名;

                echo "/etc/sysconfig/" | grep -o -E "[[:alnum:]]+/?"

                # echo "/etc/sysconfig/" | grep -o -E "[^/]+/?$" | cut -d/ -f1

[root@linux_basic ~]#echo "/etc/rc.d/init.d/" | grep -o "[^/]\{1,\}/\?$"
init.d/
# basename /etc/init.d/rc.d
rc.d
# dirname /etc/init.d/rc.d
/etc/init.d

            13、找出ifconfig命令结果中的1-255之间的数字;

            # ifconfig | grep -o -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

转载于:https://my.oschina.net/u/1762991/blog/663136

你可能感兴趣的文章
文档管理,文本编辑控件TX Text Control .NET for WPF
查看>>
复习 Python 匿名函数 内建函数
查看>>
Security Identifiers | Win SRV2016 SID Change 修改
查看>>
看看来自日本的扫描,做网站需要注意的
查看>>
JDK 1.7+Android SDK+IntelliJ IDEA 13+Genymotion 安卓开发环境部署
查看>>
钓鱼邮件***防范指南
查看>>
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>
【复制】slave筛选复制之二(create/drop table语句)
查看>>
Movie Store OpenCart 自适应主题模板 ABC-0249
查看>>
mytop-MySQL监控工具
查看>>
RedHat linux YUM本地制作源
查看>>
apache端口占用问题
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
几句话就能让你明白:网络地址转换(NAT)
查看>>