1. 典型的应用场合:grep、egrep检索文本行

使用不带-E 选项的grep时,支持基本正则匹配。例如,'abc'关键词检索,'^abc' 匹配行首,'abc$' 匹配行尾

grep 'bash' /etc/passwd        #输出包含bash的行grep '^r'  /etc/passwd         #匹配以r开头的行grep 'in$' /etc/passwd         #匹配以in结尾的行

若是检索多个条件,例如,输出以'root'或者以'daemon'开头的行,在基本正则中,或者'|'必须转义为‘\|’

grep  '^root|^daemon'  /etc/passwd          #搜索无结果grep  '^root\|^daemon'  /etc/passwd         #正确获得结果

使用grep -E 或者egrep 命令,可以支持扩展正则匹配,能自动识别' | '等正则表达式中的特殊字符,例如:

grep -E '^root|^daemon'  /etc/passwdegrep '^root|^daemon'  /etc/passwd

2. grep、egrep 命令的-q选项

选项-q  表示quiet(静默)的意思,结合此选项可以只做检索而不输出,通常在脚本内用来识别查找的目标是否存在,通过

返回状态%? 来判断,这样可以忽略无关的文本信息,简化脚本输出

检查系统是否有www用户信息,如果存在则显示YES,否则输出NO,:

[root@localhost ~]# grep 'www' /etc/passwd && echo "YES" || echo "NO"
www:x:1002:1002::/home/www:/sbin/nologin
YES

加上-q 选项之后:

[root@localhost ~]# grep -q 'www' /etc/passwd && echo "YES" || echo "NO"
YES

可以忽略输出信息,只显示判断结果,容易辨别,-q 选项的效果与使用 &>  /dev/null 类似

3. -c 选项,输出匹配的行数

统计用户中登录shell为"/sbin/nologin" 的用户个数

[root@localhost ~]# grep -c 'sbin/nologin$' /etc/passwd
48

通过-c 选项可输出匹配行数,与 wc -l 的效果相同,但是写法简单,例如:统计可登录系统的用户个数

[root@localhost ~]# grep -c '/bin/bash' /etc/passwd
4

或者

[root@localhost ~]# grep '/bin/bash' /etc/passwd | wc -l
4

4. 基本元字符

" . "       匹配任意单个字符

输出/etc/rc.local 文件内至少包括一个字符的行,即非空行:

[root@localhost ~]# grep '.' /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local

输出空行(-v 取反):

[root@localhost ~]# grep -v '.' /etc/rc.local 

上述取空行的操作与下列操作效果相同

[root@localhost ~]# grep '^$' /etc/rc.local 

+ 、?、*      目标出现的次数

输出包含" f "的行,即" f "至少出现一次:

[root@localhost ~]# egrep 'f+' /etc/rc.local
# to run scripts during boot instead of using this file.
# this script will NOT be run after all other services.

输出包含init、initial的行,即末尾的' ial ' 最多出现一次:

[root@localhost ~]# egrep 'init(ial)?' /etc/rc.local# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you don't# want to do the full Sys V style init stuff.

输出包括stu、stuf、stuff、stufff.……的行,即末尾的f可以出现0次或任意多次。重复目标只有一个字符时,可以不用括号:

[root@localhost ~]# egrep 'stuf*' /etc/rc.local
# You can put your own initialization stuff in here if you don't# want to do the full Sys V style init stuff.

输出所有行,单独的 ' .* ' 可以匹配任意行(包括空行):

[root@svr5 ~]# egrep '.*' /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.touch /var/lock/subsys/local

输出/etc/passwd内以 ' r ' 开头且以' nologin ' 结尾的行:

[root@localhost ~]# egrep '^r.*nologin$' /etc/passwd
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

{ }           限定出现的次数范围

egrep '(ab){3}' a.txt          #输出ab连续出现三次的行,即abababegrep '(ab){2,4}' a.txt        #输出ab连续出现2~4次的行,即abab,ababab,ababababegrep '(ab){3,}' a.txt         #输出ab至少出现三次的行,即ababab,abababab,……

[ ]        匹配范围内的单个字符

输出包括abc、abd的行,即前两个字符为ab,第三个字符只要是c、d中的一个就符合条件

egrep 'ab[cd]' a.txt

输出非字母的行

egrep '[^a-zA-Z]' a.txt

\<    \>      单词边界

输出/etc/rc.local 内包括单词 ' init ' 的行,initialization不合要求:

[root@localhost ~]# egrep '\<init\>' /etc/rc.local
# This script will be executed *after* all the other init scripts.
# want to do the full Sys V style init stuff.

输出以" ll " 结尾的单词的行,使用 \> 匹配单词右边界:

 [root@localhost ~]# egrep 'll\>' /etc/rc.local# This script will be executed *after* all the other init scripts.# want to do the full Sys V style init stuff.

grep与正则表达式匹配相关推荐

  1. linux grep 正则匹配字符串,Linux grep与正则表达式详解

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,本文主要给大家分享Linux grep与正则表达式的相关知识,感兴趣的朋友一起看看吧,希望能帮助到大家. grep ...

  2. 正则表达式匹配linux时间,linux grep与正则表达式使用介绍

    grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...

  3. grep正则表达式匹配地址、家庭住址

    grep正则表达式匹配地址.家庭住址 项目场景: Linux系统想要扫描包含有地址的文件,可以用grep(或egrep)正则表达式匹配查询.其中 egrep 效果同 grep -E 用于匹配正则表达式 ...

  4. 深入浅出grep与正则表达式

    一.什么是正则表达式 很可能我们经常会听到一些有经验的系统管理员告诉我们说:正则表达式非常重要.为什么说正则表达式非常重要呢?因为我们在使用文本编辑的时候或者编写shell脚本的时候经常会使用到查找. ...

  5. grep与正则表达式

    grep与正则表达式 一.grep grep文本过滤工具 作用:文本搜索工具,可以指定内容对指定文本进行匹配搜索:打印匹配的行 由正则表达式字符及文本字符编写的过滤条件,来进行逐行匹配 -- colo ...

  6. Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式...

    本章Blog相关Linux知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户 ...

  7. grep及正则表达式

    grep可以说是Linux系统当中的一个文本检索工具.在Linux系统当中,其中有两个核心的理念:一切皆文件.配置文件保存为纯文本的格式.既然是纯文本的格式,可以想象,有一个好的文本检索工具是多么必要 ...

  8. Linux     grep命令,正则表达式

    grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression ...

  9. 剑指 Offer 19. 正则表达式匹配 regex_match() regex()

    一. 题目: 剑指 Offer 19. 正则表达式匹配 请实现一个函数用来匹配包含'. '和''的正则表达式.模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(含0次).在本题 ...

最新文章

  1. html传值方式有哪几种,关于html页面间传值的几种方法
  2. Javascript代码优化的8个知识点
  3. Linux小细节-1
  4. css中的单位换算_金蝶ERP入门教程:动态换算率及辅助计量单位的应用
  5. 阿卡接口_阿卡vs风暴
  6. 免责协议怎么写_离婚后房产过户协议怎么写?需要公证吗?
  7. Linux 命令(110)—— help 命令(builtin)
  8. com线程模型实验之三
  9. 汇总|实时性语义分割算法(共24篇)
  10. 解决Linux出现“cannot create temp file for here-document: No space left on device”的问题
  11. DOS批处理命令之for命令(批量安装APK)
  12. 《UniBench A Benchmark for Multi-Model Database Management Systems》阅读笔记
  13. Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations...
  14. 百度大脑FaceID人脸识别模型量化技术,确保算法精度无损加速一倍
  15. linux bios 禁用usb设备,当USB在UEFI / BIOS中工作时,为什么USB在Linux中不工作?
  16. 弘辽科技:拼多多推广计划怎么设置划算?如何做好推广?
  17. windows环境下安装RabbitMQ(超详细)
  18. CS5801 HDMI转4K 4lane_DP/eDP方案
  19. 2022工作中遇到的问题四
  20. 记第一次生产项目中Flutter接入原生项目遇到的问题

热门文章

  1. IDEA-Tomcat-源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示
  2. 桥牌笔记:防止将牌失控
  3. 今日A股有望涨停的热门股有哪些?
  4. c语言数据类型ppt,【C语言】基本数据类型.ppt
  5. [hiho 19]单点修改的线段树
  6. caoz谈能力成长 - 取舍之道
  7. 工作快速进步的六个有效方法
  8. Sorry,Buddha
  9. WDS服务搭建和部署Win10
  10. mysql_general.log清理,清理Mysql general_log的方法总结