Linux三剑客之grep、egrep及正则表达式使用详解

Linux三剑客是Linux中非常强悍的文本处理工具,掌握三剑客,文处理已想必会有三剑在手,天下我有的感觉,三剑客之grep家族擅长文本搜索,支持以正则表达式进行文本搜索,使得grep非常强悍,以下内容就grep,egrep和正则表达式展开

Linux文本工具三剑客:
        grep、egrep、fgrep:文本搜索工具

sed:流编辑器,也是行编辑器

awk:文本格式化工具,文版报告生成器

正则表达式:是由一类字符所书写出的模式(pattern)

作用:配合支持使用正则表达式的文本搜索工具进行文本过滤

元字符:类似通配符,不表示字符本身的意义,用于额外功能性的描述

分类:基本正则表达式和扩展正则表达式



基本正则表达式(BRE)



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

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

[0-9],[[:digit:]]:所有数字

[a-z],[[:lower:]]:小写字母

[A-Z],[[:upper:]]:大写字母

[[:alpha:]]:所有大小写字母

[[:alnum:]]:数字及所有大小写字母

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

[[:punct:]]:特殊字符

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

次数匹配:对匹配符前一个字符的出现次数做匹配
                *: 前一个字符出现任意次数,如:a*,指a可以出现任意次数,包括0次

\?:前一个字符0或1次

\+:前一个字符出现至少1次

\{m\}: 前一个字符出现m次,作精确匹配

\{m,n\}: 前一个字符至少出现m次,至多n次

\{m,\}: 前一个字符至少出现m次

\{0,n}: 前一个字符至多出现n次

位置锚定:限定所匹配到的字符出现的位置
                ^:行首锚定

$:行尾锚定

^$:空白行

^[[:space:]]*$:带有空白字符的空白行

\<或\b:词首锚定

\>或\b:词尾锚定

分组:
            \(\):对字符分组,如:\(ab\)

引用:
            \1:引用表达式中第一个‘左括号和与之对应的右括号’中所匹配到的内容一次,即把括号中的 内容在引用处再显示一次



grep:Global search REgular expression and Print out the line
        支持使用正则表达式进行文本搜索并打印出模式所匹配到的行



grep [OPTIONS] PATTERN [FILE...]       
            --color=auto:对匹配到的字符着色高亮显示(centos7中默认grep=‘grep --color=auto)

-i:忽略大小写

-o:仅显示匹配到的内容

-n:显示行号

-v,--invert-match:取反,显示与匹配模式相反的内容

-E:支持扩展的正则表达式

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

实例:         
        (1)取出/etc/passwd中用户名以“s"开头用户的信息
           

(2)找出/etc/passwd文件中的三位或四位数
           

(3)取出shutdown用户的用户信息
            

(4)取出root用户之外的其他用户信息
           

(5)取出/etc/bashrc文件中的空白行并打印出行数
           

(6)找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了非空白字符的行
           

(7)取出默认shell为nologin,用户id最大的用户
           

(8)取出用户名和默认shell相同的用户信息
           



扩展正则表达式:(ERE)



字符匹配:同基本正则表达式

.:任意单个字符

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

[0-9],[[:digit:]]:所有数字

[a-z],[[:lower:]]:小写字母

[A-Z],[[:upper:]]:大写字母

[[:alpha:]]:所有大小写字母

[[:alnum:]]:数字及所有大小写字母

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

[[:punct:]]:特殊字符

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

次数匹配:区别于基本正则表达式少了转义符“\"
                *:匹配任意次数

?:0或1次

+:至少一次

{m}:匹配m次

{0,m}:匹配至多m次

{m,}:匹配至少m次

{n,m}:至多m次,至少n次

位置锚定:也同于基本正则表达式
                ^:行首锚定

$:行尾锚定

^$:空白行

\<或\b:词首锚定

\>或\b:词尾锚定

分组:
                (ab)

引用:
                \1

或者:
                |:a|b,a或b
                    (C|c)at,Cat或cat


基本正则与扩展正则表元字符使用差异总结:
        基本正则表达式和扩展正则表达式的元字符不同在于,扩展正则表达式在作次数匹配和分组不需要转义符"\",并多了”或“匹配



egrep: grep的扩展版本        
            支持使用扩展正则表达式进行文本搜索并打印出模式所匹配到的行



egrep [OPTIONS] PATTERN [FILE...]

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

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

-P, --perl-regexp:支持使用pcre正则表达式            
                -e PATTERN, --regexp=PATTERN:多模式机制

-f FILE, --file=FILE:FILE为每行包含了一个pattern的文本文件,即grep script               
                -A NUM, --after-context=NUM, 显示出匹配行后面的N行

-B NUM, --before-context=NUM,显示出匹配行前面N行

-C NUM, -NUM, --context=NUM,显示出匹配行前后N行

如下图:

-A 2

-B 2

-C 2

grep,egrep的选项基本通用,grep中列举出来的常用选项就不在这里再列举了

实例:(grep中的练习用egrep同样能够实现,以下练习主要演示”|“或的使用)

(1)取出/tmp目录下属组有可读权限的文件或目录

(2)取出# ip add show结果中的1-255中的整数

工具虽然强大,只有熟练掌握才能化为己用,熟悉命令使用只有一条路——把键盘敲烂,别问我为什么,我只能用别人告诉我的话来告诉你:”键盘敲烂,月薪五万“

时间: 2024-09-29 09:21:38

Linux三剑客之grep、egrep及正则表达式使用详解的相关文章

Linux三剑客之grep伐木累(正则表达式)

一.Linux文本处理三剑客 Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.今天主要给大家介绍一下三剑客中的第一剑:grep伐木累. 二.grep是什么? grep 全称(Globally search a Regular Expression and Print)是一个文本搜索工具,基于"pattern"(这里指的是过滤模式,多指正则表达式)对给定的文本进行搜索. grep家族: grep:支持使用基本正则表达式: egrep:支持

linux下的grep,egrep及正则表达式

一, linux上常用的文本搜索工具,grep家族和正则表达式及介绍   linux上常用的文本搜索工具: grep(egrep,fgrep):文本搜索工具:基于"pattern"对给定文本进行搜索操作: sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具: awk:GNU awk,文本格式化工具:文本报告生成器: 正则表达式:由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能: 一般分为两类: 基本正则表达式:BRE 扩

Linux 文本处理三剑客之grep &nbsp; egrep

Linux 文本处理三剑客之grep   egrep grep: Global search REgular expression andPrint out the line. 作用:文本搜索工具,根据用户指定的"模式(pattern)"逐行去搜索目标文本,打印匹配到的行. 模式:由正则表达式的元字符及文本字符所编写的过元字符,其中正则表达示分基本正则表达式,和扩展正则正则表达式2类 元字符不表示其字面意义,而用于表示通配或控制功能滤条件.元字符有下面一些 字符匹配: .:匹配任意单个

linux文本处理三剑客之grep家族及其相应的正则表达式使用详解

一.Linux文本处理三剑客.grep家族和正则表达式介绍 Linux上文本处理三剑客: grep(egrep, fgrep):文本搜索工具:基于"pattern(过滤条件)"对目标文本进行逐行搜索操作: sed:Stream Editor,流编辑器行编辑工具:文本编辑工具: awk:GNU awk,文本格式化工具:文本报告生成器: grep家族: grep: Global search REgular expression and Print out the line,支持使用基本正

Linux 命令grep, egrep,正则表达式大全

Linux grep 命令     Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版

Linux三剑客之grep

linux三剑客之grep grep命令是一个强大的文本搜索工具,全称是Global Regular Expression Print,它能使用正则表达式搜索文本,并把匹配的行打印出来,使用权限是所有用户 1.使用格式 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] grep 关键词 文本文件 2.比较常用的参数 -c:仅显示找到的次数 -i:忽略大小写 -n:显示行号 -o:只显示

不看绝对后悔的Linux三剑客之grep实战精讲

三.Linux三剑客之grep命令精讲 [命令简介]Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. [功能说明]grep***** ==擅长过滤器,把想要的或者不想要的分离开.Linux三剑客 老三. [用法格式]grep [选项]... PATTERN [FILE]... [参数选项][options]主要参数

grep, egrep及相应的正则表达式用法详解

grep, egrep及相应的正则表达式用法详解 一.grep/egrep Global search REgular expression and Print out的简写,是一种强大的文本搜索工具,它根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. linux使用GNU版本的grep.它功能更强,可以通过-E.-F命令行选项来使用egrep和fgrep的功能(fgrep不使用

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl 需要ssl的支持,如果不需要ssl支持,请跳过这一步 复制代码代码如下: # yum install openssl* 3.gzip 类库安装 复制代码代码如下: yum install zlib zlib-