博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则介绍_grep
阅读量:6845 次
发布时间:2019-06-26

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

hot3.png

正则表达式介绍-grep(过滤指定关键词)

egrep使用时,不需要添加脱义字符\

概念:它使用单个字符串来描述或匹配一系列符合某个句法则规则的字符串;正则表示式通常用来检索和替换那些符合某个模式的文本内容。无论是查找某个文档,还是查询某个日志文件并分析其内容,都会用正则表示式。正则就是一串有规则的字符串;掌握好正则对于编写shell脚本有很大帮助;各种变成语言中都有正则,原理是一样的。命令格式:grep [-cinvrABC] 'word' filename常用选项如下:-c 表示打印符合要求的行数;-i 表示忽略大小写;-n 表示输出符合要求的行及其行号;-v 表示打印不符合要求的号;-r 遍历所有的子目录-A 后面跟一个数字,例如-A2表示打印符合要求的行及下面的两行;-B 后面跟一个数字,例如-B2表示打印符合要求的行及上面的两行;-C 后面跟一个数字,例如-C2表示打印符合要求的行及上下各两行。^ 这个符号表示以什么什么开头。如:^# 以#开头;或者[^#] 取反,除#号开头的行
  • 创建一个grep目录,拷贝过来一个文件/etc/passwd

    [root /]# mkdir grep #创建一个grep目录

    [root /]# cd /grep/ #进这个目录里面
    [root grep]# cp /etc/passwd . #拷贝passwd到.(本目录下)
    [root grep]# ls #查看目录下有什么文件
    passwd

  • 过滤passwd文件里,nologin的字符

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

    这里nologin过滤完后标红,是因为grep有一个--color=auto 添加颜色显示
    可以查看下grep命令
    [root grep]# which grep #which查看grep
    alias grep='grep --color=auto'
    /usr/bin/grep

  • grep查看符合要求的行数 -c

    [root@localhost grep]# grep -c 'nologin' passwd #-c符合’nologin'的行数

    15

  • grep显示这个文件包包含‘nologin'的行数。

    [root@localhost grep]# grep -n 'nologin' passwd 

    2:bin:x:1:1:bin:/bin:/sbin/nologin
    3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4:adm:x:3:4:adm:/var/adm:/sbin/nologin
    5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10:operator:x:11:0:operator:/root:/sbin/nologin
    11:games:x:12:100:games:/usr/games:/sbin/nologin
    12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13:nobody:x:99:99:Nobody:/:/sbin/nologin
    14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    15:dbus:x:81:81:System message bus:/:/sbin/nologin
    16:polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    18:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    19:chrony:x:998:996::/var/lib/chrony:/sbin/nologin

  • grep不区分大小写显示出来 -ni

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

  • grep取反,除了nologin的显示出来 -v

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

  • 遍历所有的子目录 -r

    [root@localhost grep]# grep -r 'root' /etc/ (etc目录下所有包含root的文件列出来)

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

  • -A2把包含root的行,以及这行下面的两行都打印出来。

    [root@localhost grep]# grep -nA2 'root' passwd 

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

  • -B2把包含root的行,以及这行下面的两行都打印出来。

    [root@localhost grep]# grep -nB2 'root' passwd 

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

  • -C2把包含root的行以及这上下两行都打印出来。

    [root@localhost grep]# grep -nC2 'root' passwd 

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

grep正则表似乎具体用法示例

查看一个文件里0-9所有的数字,[]括号表示里面的任意一个字符

[root@localhost grep]# grep '[0-9]' passwd 

2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

反选-v,把不包含数字的行列出来。

[root@localhost grep]# grep -nv '[0-9]' /etc/inittab 

2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

取反,过滤掉所有以#开头的行

[root@localhost grep]# grep -nv '^#' inittab

把不是以#开头的行,显示出来

  • 过滤非0-9开头的数字的行显示出来

    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

    过滤出任意一个字符和重复字符,示例如下:

    [root@localhost grep]# grep 'r.o' passwd 

    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    2018.4.22 五周第五次课 (正则grep-过滤指定关键词)
    .表示任意一个字符,上例中,r.o表示r与o之间有一个任意字符的行过滤出来。

指定要过滤出的字符出现次数,示例如下:

[root@localhost grep]# grep 'o{2}' passwd 

root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
2018.4.22 五周第五次课 (正则grep-过滤指定关键词)
这里用到了符号{}表示内部为数字,表示前面的字符要重复的词数。
{}左右都需要加上转义字符\,另外使用{}还可以表示一个范围,具体格式为{n1,n2}
{}花括号表示前一个字符的范围,如果o{2},表示2个连续的oo显示出来。

过滤出一个或多个指定的字符,示例如下:

[root@localhost grep]# egrep 'o+b' passwd 

nobody:x:99:99:Nobody:/:/sbin/nologin

过滤出零个或iyge指定的字符,示例如下:

[root@localhost grep]# egrep 'o?1o' passwd 

bin:x:1o:1:bin:/bin:/sbin/nologin
o1o

过滤出字符串1或者字符串2,示例如下: |或者

[root@localhost grep]# egrep 'root|nologin' passwd 

2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

总结:

. 表示任意一个字符* 表示零个或者多个字符{} 表示一个范围+ 表示一个或多个任意字符? 表示零个或多个任意字符| 表示或者

转载于:https://my.oschina.net/u/3830571/blog/1800649

你可能感兴趣的文章
参数的排列组合2
查看>>
struts2中ognl标签详解
查看>>
.NET中Flags枚举的使用
查看>>
【Python之旅】第八篇:开发监控软件的思想与流程
查看>>
KVM虚拟机克隆
查看>>
XenApp / XenDesktop 7.6 初体验二 配置计算机目录和交付组
查看>>
C#的换行符和回车符在程序语句中如何表示?
查看>>
【MySQL】ibdata文件增大的原因
查看>>
MS SQL 批量给存储过程/函数授权
查看>>
10年测试总监经验分享,你与优秀工程师的距离!
查看>>
2019年在哪里找好的高层次人才扶持政策?
查看>>
解决代码报红:Cannot resolve symbol 'xxx'
查看>>
第71节:Java中HTTP和Servlet
查看>>
Linux开源CommunityBridge平台 提供资金、安全以及人员三项关键
查看>>
Python爬虫入门教程 5-100 27270图片爬取
查看>>
Day1:html和css
查看>>
开源如何在云上存活?
查看>>
Android 网络基础之 HTTP
查看>>
ES6实现继承
查看>>
有擎企业系统v1.0.0 积木式搭建网站,页面构建更灵活
查看>>