正则表达式(Regular Expression)是一种字符串处理的标准,对于系统管理员来说,正则是一门必修技。例如:系统产生数据量太大,身为系统管理员每天去看这么多的信息数据, 从千百行的数据里面找出一行有问题的信息,怎么办? 这个时候,我们就可以透过正则表达式的功能,将这些登录的资讯进行处理, 仅取出有问题的资讯来进行分析,如此一来,你的系统管理工作将会更加直观,简便!

正则表达式中我们常使用的命令,三剑客:grep、sed、awk。通常使用三剑客结合正则的特殊字符,来完成我们需要的操作。

grep命令:

选项与参数:
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
-C  :类似-A -B ,接数字,前后的n行打印;
--color=auto 可将正确的那个撷取数据列出颜色;(使用alias grep='grep --color=auto' ,添加到~/.bashrc永久生效)
-i  :忽略匹配字符的大小写;
-v  :将未被匹配的行打印;
-n  :输出行号;
-o  :仅打印匹配的字段而不是行,用来统计匹配到多少次
-E  :此时相当于egrep,使用扩展的正则表达式

介绍玩grep常用选项后,结合grep来看看基础正则常用的特殊字符。

正则表达式特殊字符归纳

  • ^word 意义:待搜寻的字串(word)在行首!

范例:搜寻行首为 # 开始的那一行,并列出行号

grep -n '^#' filename

  • word$ 意义:待搜寻的字串(word)在行尾!

范例:将行尾为 ! 的那一行列印出来,并列出行号

grep -n '!$' filename

  • ^$ 意义:空白行,开头之后就是结尾当然是空行了!

  • . 意义:代表『一定有一个任意字节』的字符!

范例:搜寻的字串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee) !亦即 e 与 e 中间『一定』仅有一个字节,而空白字节也是字节!

grep -n 'e.e' filename

  • \ 意义:跳脱字符,将特殊符号的特殊意义去除!

范例:搜寻含有单引号 ' 的那一行!

grep -n \' filename

  • * 意义:重复零个到无穷多个的前一个 RE 字符

范例:找出含有 (es) (ess) (esss) 等等的字串,注意,因为 * 可以是 0 个,所以 es 也是符合带搜寻字串。另外,因为 * 为重复『前一个 RE 字符』的符号, 因此,在 * 之前必须要紧接著一个 RE 字符喔!例如任意字节则为 『.*』 !

grep -n 'ess*' filename

  • [list] 意义:字节集合的 RE 字符,里面列出想要撷取的字节!

范例:搜寻含有 (gl) 或 (gd) 的那一行,需要特别留意的是,在 [] 当中『谨代表一个待搜寻的字节』, 例如『 a[afl]y 』代表搜寻的字串可以是 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思!

grep -n 'g[ld]' filename

  • [n1-n2] 意义:字节集合的 RE 字符,里面列出想要撷取的字节范围!

范例:搜寻含有任意数字的那一行!需特别留意,在字节集合 [] 中的减号 - 是有特殊意义的,他代表两个字节之间的所有连续字节!但这个连续与否与 ASCII 编码有关,因此,你的编码需要配置正确(在 bash 当中,需要确定 LANG 与 LANGUAGE 的变量是否正确!) 例如所有大写字节则为 [A-Z]

grep -n '[A-Z]' filename

  • [^list] 意义:字节集合的 RE 字符,里面列出不要的字串或范围!

范例:搜寻的字串可以是 (oog) (ood) 但不能是 (oot) ,那个 ^ 在 [] 内时,代表的意义是『反向选择』的意思。 例如,我不要大写字节,则为 [^A-Z]。但是,需要特别注意的是,如果以 grep -n [^A-Z] regular_express.txt 来搜寻,却发现该文件内的所有行都被列出,为什么?因为这个 [^A-Z] 是『非大写字节』的意思, 因为每一行均有非大写字节,例如第一行的 "Open Source" 就有 p,e,n,o.... 等等的小写字

grep -n 'oo[^t]' filename

  • \{n,m\} 意义:连续 n 到 m 个的『前一个 RE 字符』

意义:若为 \{n\} 则是连续 n 个的前一个 RE 字符,

意义:若是 \{n,\} 则是连续 n 个以上的前一个 RE 字符! 范例:在 g 与 g 之间有 2 个到 3 个的 o 存在的字串,亦即 (goog)(gooog)

grep -n 'go\{2,3\}g' filename

  • \<和\> 意义:

    \<后面接的字符必须是一个单词最前部分;

    \>前面接的字符必须是一个单词的最后部分;

    注意:一个单词定义的是:字母、数字、下划线的组合

    所以\<word\>必须是单独的word单词才会匹配,其他符号如: ()/等都会视为单词分割号

  • 分组\( \) 意义:

    小括号的内容作为整体,如\(ab\)* 匹配0个到无穷个ab

    范例:test文件内容如下:

    love:lover

    love:liker

    like:lover

    like:liker

    如何取出1和4行?

    第1,4行,特点前后文有一致的字符串,可以使用引用上文的功能

    在使用分组功能时,我们可以通过\1 \2 \3 ...来引用,所以:

    grep '\(.*\):\1r' test

转载于:https://blog.51cto.com/googgoogstudy/1632044

LINUX正则表达式-- grep相关推荐

  1. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  2. Linux正则表达式 --已整理

    linux正则表达式 一.linux文本查找命令 二.正则表达式介绍 基本正则表达式元字符 三.拓展正则表达式 实例 1 正则表达式 实例 2 :扩展正则表达式 在使用linux时,经常需要进行文件查 ...

  3. linux 通配符 正则表达式 区别,linux 正则表达式和通配符

    linux 正则表达式和通配符 通配符用于查找文件 包含三种:  * ? [] * 代表任意个任意字符 ? 代表任意一个字符 [] 代表中括号中的一个字符 正则表达式(正则是包含匹配,只要包含就可以匹 ...

  4. Linux之grep及正则表达式

    grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...

  5. linux下grep文件内容搜索工具及基本正则表达式详解

    linux下grep文件内容搜索工具及基本正则表达式详解 grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选 ...

  6. 【Linux】grep命令与正则表达式(RegExp)

    文章目录 一.开发环境介绍 二.Linux中grep的作用 三.grep命令使用格式和常用选项 四.grep中常用的正则表达式 1.正则表达式的基本单位/元字符 2.正则表达式的重复限定符 3.正则表 ...

  7. linux邮箱格式正则表达式grep,Linux系统grep正则表达式的介绍

    Linux系统正则表达式是字符串的标示方法, 主要的正则表达式有sed.vim.awk,当然还包括grep正则表达式.前文我们已经介绍了Linux系统正则表达式的用法,今天就来着重介绍一下Linux系 ...

  8. linux中grep命令 菜鸟教程,linux grep正则表达式与grep用法详解

    需要大家牢记:正则表达式与通配符不一样,它们表示的含义并不相同 正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 ...

  9. 【Linux】grep正则表达式详解

    grep正则表达式 语法格式: grep [options] PATTERN [FILE...] grep [options] [-e PATTERN | -f FILE] [FILE...] 匹配模 ...

最新文章

  1. express快速入门
  2. 68. Leetcode 669. 修剪二叉搜索树 (二叉搜索树-基本操作类)
  3. .如何在Linux上安装Postman应用程序?
  4. 巡检,不再要你磨破机房门槛
  5. 联想微型计算机 m4350q,比超极本便携 评联想M4350q小型台式机
  6. 如何通过JavaScript动态加载js
  7. C#中oracle数据库的连接方法
  8. Sql Server 中存储过程的output return的区别
  9. [转载] 字符串操作截取后面的字符串_对字符串的5个必知的熊猫操作
  10. Android录音采样率限制问题(十一)
  11. 微信公众号图文消息html5,微信公众号单图文消息如何编辑
  12. 开源设计和原型制作平台Penpot
  13. 电磁兼容测试分析软件软件,电磁兼容测试方案的主要应用
  14. 空城旧梦,相逢不必邂逅
  15. TypeScript简记
  16. html 数据交互动画,纯css实现可交互的动画
  17. JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等
  18. 步进电机五根线怎么接_第一讲:老冯三分钟教会你步进电机接线
  19. echarts修改标题字体大小、颜色、位置、内容
  20. JavaBeans 教程

热门文章

  1. win10下mysql 8.0.18 安装配置方法图文教程
  2. 清华大学图神经网络综述:模型与应用
  3. “从A到I”智慧数据中心上海论坛
  4. JAX-RS 从傻逼到牛叉 5:资源的动态定位
  5. wp7使用Cocos2d-X for XNA制作一个塔防类游戏 (二)在游戏中加入地图和怪物。(上)
  6. Windows7操作系统任务栏的相关技巧
  7. 点击更新没反应_Edge浏览器双击无反应?再也不用烦恼啦
  8. 跟我一起写操作系统(二)——史上最简单的内核
  9. JavaScript修改css中style,classname,cssText实例
  10. 反射 + 配置文件 实现IOC容器