Linux文本处理三剑客之grep 和 正则表达式

本文主要介绍:1、文本处理工具grep 2、正则表达式

Linux文本处理三剑客:

1、grep : 文本过滤(模式:pattern)工具

2、sed  : (stream editor),文本编辑工具

3、awk : Linux上的实现gawk,文本报告生成器

 

1、文本处理工具grep

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。

模式:由正则表达式字符及文本字符所编写的过滤条件。

(grep 支持标准正则表达式; egrep  支持扩展正则表达式,相当于grep -E ; fgrep  不支持正则表达式)

  •     语法:grep  [OPTIONS]  PATTERN  [FILE…]

    选项:

–color=auto: 对匹配到的文本着色显示

-v: 显示不能够被pattern匹配到的行

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

-n: 显示匹配的行号,匹配到的是第几行  常用

-c: 统计匹配的行数,匹配到了多少行 常用

-o: 仅显示匹配到的字符串  常用

-q: 静默模式,不输出任何信息

-A #: after, 后#行,包含匹配到的行,还显示匹配到的行的后几行

-B #: before, 前#行,包含匹配到的行,还显示匹配到的行的前几行

-C #: context, 前后各#行,包含匹配到的行外,还显示匹配到的行的前后各几行

-e:实现多个选项间的逻辑or关系 ,多个-e 之间是或关系(grep –e  ‘cat’  -e  ‘dog’  file) 常用

-w:整行匹配整个单词,只能匹配整个单词(字母、数字、下划线都算单词一部分)

-E:使用ERE,相当于egrep  常用

-F:相当于fgrep,不支持正则

2、正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。(man  7  regex)

分为两类:基本正则表达式:BRE

扩展正则表达式:ERE

基本正则表达式元字符:字符匹配、匹配次数、位置锚定、分组

  • 字符匹配:

            .     匹配任意单个字符;

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

[^]    匹配指定范围外的任意单个字符

[:digit:]   十进制数字 ([0-9]也可,匹配10-19之间的数字不能写成[10-29],要每一位分别写[1-2][0-9])

[:lower:]   小写字母

[:upper:]   大写字母

[:alpha:]    任何英文大小写字符

[:alnum:]   字母和数字

[:space:]      空白字符(水平和垂直的空白字符,比[:blank:]  包含范围广)

[:punct:]     标点符号

[:blank:]   空白字符(空格和制表符)

[:cntrl:]   不可打印的控制字符(退格、删除、警铃…)

[:graph:]   可打印的非空白字符

[:print:]   可打印字符

 

  • 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

            *    匹配前面的字符任意次,包括0次 (贪婪模式:尽可能长的匹配)

.*    任意长度的任意字符

\?    匹配其前面的字符0或1次

\+    匹配其前面的字符至少1次

\{m\}    匹配前面的字符m次

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

\{,n\}    匹配前面的字符至多n次

\{m,\}    匹配前面的字符至少m次

 

  • 位置锚定:定位出现的位置

            ^    行首锚定,用于模式的最左侧(^PATTERN)

$    行尾锚定,用于模式的最右侧(PATTERN$)

^PATTERN$    用于模式匹配整行(  ^$    空行        ^[[:space:]]*$     水平或垂直空白行     )

 

\< 或 \b    词首锚定,用于单词模式的左侧

\> 或 \b    词尾锚定;用于单词模式的右侧

\<PATTERN\>    匹配整个单词

 

  • 分组: \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如\(root\)\+表示root至少出现一次。

               后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

利用: \1, \2, \3, …来引用前面从左到右第一个括号、第二个括号…匹配到的内容

如: \(bican\+\(bc\)*\)

\1  匹配      bican\+\(bc\)*

\2  匹配      bc

  •        或者:\|

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

扩展正则表达式元字符

  • 字符匹配(同基本正则表达式)
  • 匹配次数

             *    匹配前面的字符任意次,包括0次 (贪婪模式:尽可能长的匹配)

?    匹配其前面的字符0或1次

+    匹配其前面的字符至少1次

{m}    匹配前面的字符m次

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

{,n}    匹配前面的字符至多n次

{m,}    匹配前面的字符至少m次

  • 位置锚定(同基本正则表达式)
  • 分组 :   ()     后向引用:  \1    \2
  • 或者:  |             示例:   (C|c)at   表示Cat或cat

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96487

赞 (1)
bican813bican813
上一篇 2018-04-16 21:57
下一篇 2018-04-17 17:44

相关推荐

  • 软件包管理 2 —–基本知识 rpm yum

    rpm库文件查看二进制程序所依赖的库文件ldd /PATH/TO/BINARY_FILE管理及查看本机装载的库文件ldconfig 加载库文件/sbin/ldconfig -p:显示本机已经缓存的所有可用库文件名及文件路径映射关系配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf缓存文件:/etc/ld.so.cac…

    Linux笔记 2018-04-22
  • 一次性任务:at命令

    一次性任务:at命令at使用必备1th:1)type at2)rpm -qf path3)yum install 包名4)rpm -ql at (有atd.service发现它也是个服务,即要使用at必须要开启这个服务)2th:1)systemctl status atd (active running)2)systemctl start atd3th:nt…

    Linux笔记 2018-05-06
  • grep命令以及正则表达式

    grep,正则表达式

    Linux笔记 2018-04-08
  • linux系统命令行安装软件

    一、CentOS7 1)首先通过df或lsblk命令,查看系统中有无挂载本地光盘镜像: 2)若没有挂载,即当前系统中df看不到光盘设备/dev/sr0,使用mount命令进行光盘挂载: monut /dev/cdrom /mnt 3)然后切换到/mnt路径下,到Packages目录下,就可以看到当前系统光盘镜像所自带的所有rpm软件包,然后同通过rpm -i…

    2018-03-30
  • LVS虚拟服务器相关实验

    本节内容主要是是lvs相关性实验,及lvs健康性检查工具Ldirectord

    2018-07-05
  • 脚本编程基础环境设置

    程序:指令+数据程序编程风格:过程式:以指令为中心,数据服务于指令对象式:以数据为中心,指令服务于数据shell程序:提供了编程能力,解释执行 计算机:运行二进制指令编程语言:低级:汇编高级:编译:高级语言–>编译器–>目标代码java,C#解释:高级语言–>解释器–>机器代码…

    Linux笔记 2018-04-15