在Linux系统当中,处理文本有三个常用的工具,俗称文本处理三剑客,grep就是其中之一。

grep是一种强大的文本搜索工具,它的全称是:Globally search a Regular Expression and Print。工作原理是基于正则表达式引擎按给定的“pattern”对文本进行搜索过滤操作,并把匹配的行打印出来。因此了解要grep的用法我们可以从两方面着手,1:grep命令的用法,2:正则表达式。

1,grep命令的使用方法

首先我们可以使用man命令查看一下grep的使用帮助。

第一种使用格式为:grep [OPTIONS] PATTERN [FILE...]

使用示例:

可以看出它的作用是:根据“root(过滤条件)”对目标文本逐行进行匹配检查;打印出符合条件的行。

常用选项 --color=auto :对匹配到的文本着色后高亮显示;

使用示例:

因为在centOS7中,shell的环境变量配置文件中已经定义了别名grep=“grep --color=auto”(可以通过type命令查看),所以演示时我们先执行撤销别名操作。

看以看出这种方式显示结果更为直观,因此下面的示例中我们使用的grep命令都是已经定义了grep=grep --color=auto的别名。

常用选项 -i:忽略字符大小写;

使用示例:

常用选项 -o:仅显示匹配 到的文本自身;

使用示例:

常用选项 -v, --invert-match:反向匹配;

使用示例:

常用选项 -q, --quiet, --silient:静默模式,不输出任何信息;

使用示例:

常用选项 -A NUM, --after-context=NUM:同时显示匹配到的文本行和它的后NUM行

使用示例:

常用选项 -B NUM, --before-context=NUM:同时显示匹配到的文本行和它的前NUM行

使用示例:

注:被匹配到的一行没有同时显示它的前两行是因为它本身已经是文本的第一行。

常用选项 -C NUM, -NUM, --context=NUM:同时显示匹配到的文本行和它的前后NUM行

使用示例:

第二种使用格式 grep  [OPTIONS]  [-e PATTERN | -f FILE]  [FILE...]

这个使用使用格式又有两种方式

第一种使用-e选项: -e PATTERN, --regexp=PATTERN:多模式机制;

使用示例:

第二种使用-f选项: f FILE, --file=FILE:FILE为每行包含了一个“pattern”的文本文件,即grep script;

使用示例:

第二部分:使用用正则表达式

正则表达式:Regular Expression, REGEX

由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能;

正则表达式可分为两类:

1,基本正则表达式:BRE(Basic Regular Expression)

1)元字符:

.:表示匹配任意单个字符

使用示例:

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

[^];匹配范围外的任意单个字符(取反)

使用示例:

常用范围表示区间:

[[:digit:]]:表示所有数字[0-9]

[[:lower:]]:表示所有小写字母,等同于[a-z]

[[:upper:]]:表示所有大写字母,等同于[A-Z]

[[:alpha:]]:表示所有字母,等同于[a-zA-Z]

[[:alnum:]]:表示所有字母和数字,等同于[a-zA-Z0-9]

[[:graph:]]:表示所有非空字符(不包含空格和控制字符)

[[:cntrl:]]:表示所有控制字符

[[:punct:]]:表示所有标点符号

[[:print:]]:表示所有非空字符(包含空格)

[[:space:]]:表示空白字符

详情可使用man 7 glob查看。

使用示例:

2)匹配次数:用在要指定其出现次数的字符的后面,作用是限制其前面的字符出现的次数;默认工作于贪婪模式;

*:匹配前面的字符任意次(0,1或多次),那么 .* 可以表示为任意字符出现任意次,即任意长度的任意字符。

\+:匹配前面的字符至少一次

\?:匹配前面的0次或1次,即前面的字符可有可无

\{m\}:匹配前面的字符m次,m为非负整数

\{m,n\}:匹配其前面的字符至少m次,最多n次

\{0,n\}:最多匹配其前面的字符n次

\{m,\}:最少匹配其前面的字符m次

使用示例

3)位置锚定:限制模式所匹配到的文本只能出现于目标文本的具体位置;

^:行首锚定;用于模式的最左侧,^PATTERN

$:行尾锚定;用于模式的最右侧,PATTERN$

^PATTERN$:要让PATTERN完全匹配一整行;

^$:空行;

^[[:space:]]*$:空行或者只有空白字符的行

使用示例

\<或\b:词首锚定,用于单词模式的左侧,格式为\<PATTERN, \bPATTERN

\>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b

\<PATTERN\>:单词锚定;

单词:由非特殊字符组成的连续字符(字符串)都称为单词;

使用示例:

4)分组与引用:

\(PATTERN\):将此PATTERN匹配到的字符当作一个不可侵害整体进行处理;

注意:分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,这些变量是\1, \2, \3, ...

pat1\(pat2\)pat3\(pat4\(pat5\)pat6\)

\n:模式中第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符串;(不是模式,而是模式匹配的结果)

\1:第一组括号中的pattern匹配到的字符串;

\2:第二组括号中的pattern匹配到的字符串;

……

后向引用:引用前面的括号中的模式所匹配到的字符串;

使用示例

\| :或者

a\|b:表示a或者b

C\|cat:表示C或cat

\(C\|c\)at:表示Cat或cat

使用示例

grep命令的另外一些常用选项:

-E, --extended-regexp:支持使用扩展正则表达式;

-F, --fixed-strings:支持使用固定字符串,不支持正则表达式;

-G, --basic-regexp:支持使用基本正则表达式;

-P, --perl-regexp:支持使用pcre正则表达式;

2,扩展正则表达式:ERE(Extend Regular Express)

与基本正则表达式相同之处:

元字符: . ; * ;[ ];[^]

位置锚定:

^:行首锚定;

$:行尾锚定;

与基本正则表达式不同之处:

匹配次数:

+:匹配前面的字符至少一次,等同于基本正则表达式中 \+

?:匹配前面的0次或1次,等同于基本正则表达式中 \?

{m}:匹配前面的字符m次,等同于基本正则表达式中 \{m\}

{m,n}:匹配其前面的字符至少m次,等同于基本正则表达式中\{m,n\}

{0,n}:最多匹配其前面的字符n次,等同于基本正则表达式中 \{0,n\}

{m,}:最少匹配其前面的字符m次,等同于基本正则表达式中 \{m,\}

分组及引用:

(pattern):等同于基本正则表达式中 \(pattern\),引用方式和基本正则表达式相同,都为后向引用:\1, \2, ...

| :或者,等同于基本正则表达式中的\|

a|b:表示a或者b,等同于基本正则表达式中的a\|b

C|cat:表示C或cat,等同于基本正则表达式中的C\|cat

(C|c)at:表示Cat或cat,等同于基本正则表达式中的\(C\|c\)at

使用示例

egrep:支持使用扩展正则表达式的grep命令,相当于grep -E;

fgrep:支持使用扩展正则表达式的grep命令,相当于grep -F;

转载于:https://blog.51cto.com/puro2016/1748786

Linux中的grep、egrep及相应的正则表达式和用法相关推荐

  1. linux中的grep和egrep命令,Linux grep和egrep命令

    在Linux中,grep是一个非常强大的文本搜索工具,它可以根据用户指定的文本搜索模式对目标文件进行逐行的搜索,然后将被模式匹配到的用户所需要的信息显示出来:那么,egrep呢?从字母组合上看,二者很 ...

  2. linux grep 排除_如何在Linux中排除Grep?

    linux grep 排除 grep is very useful tool used by a lot of tech guys. grep provides different functions ...

  3. linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法

    这篇文章主要介绍了Linux中使用grep命令搜索文件名及文件内容的方法,同时文中还介绍了将匹配结果高亮显示的方法,相当实用,需要的朋友可以参考下 从文件中搜索并显示文件名 当从多个文件中搜索时,默认 ...

  4. Unix/Linux 中的 grep 命令

    Unix/Linux 中的 grep 命令参数及示例用法 作用 语法 主要参数 示例命令 作用 Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行.在文件中搜索的模式称为 正则表达式 ...

  5. linux mv时间,简介Linux中cp和mv搭配{,}在shel_l当中的用法

    简介Linux中cp和mv搭配{,}在shel_l当中的用法 发布时间:2018-01-03 18:02 来源:互联网 当前栏目:web技术类 这篇文章主要介绍了简介Linux中cp和mv搭配{,}在 ...

  6. linux中egrep的用法,liunx中grep,egrep及相应的正则表达式和用法

    正则表达式是linux中重要的一部分,学习正则表达式先要学好grep和egrep的命令使用. 1. grep: grep命令的基本语法格式 grep [OPTION]... 'PATTERN' FIL ...

  7. linux egrep和grep区别,Linux中的Grep,Egrep和Fgrep有什么区别?

    在Unix系统上的一个着名的搜索工具,可以用于搜索任何东西,无论是一个文件,或一行或多行的文件是grep实用程序.它在功能上非常庞大,这可以归因于它支持的大量选项:使用字符串模式或reg-ex模式或基 ...

  8. linux中的grep和egrep命令,Linux之grep和egrep命令总结

    grep / egrep 语法: grep  [-cinvABC]  'word'  filename -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 ...

  9. linux中grep命令查找目录下,linux中查找grep与find命令的使用

    在日常工作中,我们常常会在自己的电脑寻找某些不知道放在哪里的私密文件,通常我们会在资源管理器的搜索栏里输入一些关键字去帮助我们快速去定位查找该文件.在linux系统中也有这样的功能,只不过在linux ...

  10. llinux文本三剑客之grep、egrep及相应的正则表达式和用法

    Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什 ...

最新文章

  1. Linux那些事儿之我是Sysfs(8)一起散散步-pathwalk
  2. vue-threeJS数据驱动的三维图形可视化
  3. Linux下配置Node.js环境
  4. 数控程序中r及q代表什么_邹军:如何利用数学公式编写cnc程序?
  5. 三种方法绘制雷达图,用最快的时间做出最好看的可视化图表
  6. 运行Pangolin时提示错误
  7. ChannelOption.TCP_NODELAY, true-浅谈tcp_nodelay的作用
  8. 【推荐】会被快速否决的9种求职者.
  9. ipmitool源码解析(一)——一次带内ipmitool raw data发送过程
  10. html怎么混合颜色,CSS3 多色混合背景
  11. 全球及中国手机SAW滤波器行业供需现状及盈利前景预测报告(新版)2022-2027
  12. APP主流推广的6个方式
  13. 《基础微积分教材中译版》--11.3偏导数
  14. 转战pytorch(3)——跟上脚步(以Albert为例)
  15. 计算机组成原理-chp4-指令系统
  16. 从输入 URL 到页面加载完成的过程中都发生了什么事情?
  17. 高等数学公式(第2部分)
  18. html5制作大小写转换,JavaScript中如何实现大小写转换
  19. USB Redirector(usb设备共享软件)官方正式版V6.12.0.3230 | USB共享软件下载 | usb redirector是什么软件
  20. java.util.concurrent 包源码分析之Fork/Join框架

热门文章

  1. Spring IOC容器生命周期阶段总结
  2. MiniGUI Lite 版本的新改进
  3. 【FCL学习第二讲】使用Assimp库导入外部模型碰撞检测
  4. 煤矿三维可视化_三维激光扫描建模_BIM建模
  5. 安卓玩机搞机技巧综合资源-----关闭miui广告 怎么省电 替换开机动画 LOGO 锁屏 壁纸等等【五】
  6. 基于PyQt5完成的pdf转word
  7. Golden Software Surfer 18中文版
  8. 关于Excel文件导入
  9. python 京东页码 翻页参数生成方法
  10. 源码学习之EllipsizingTextView