Linux中不可或缺的“grep三人组”与正则表达式的那些事

Linux上文本处理“三人组”

grep, egrep, fgrep:文本搜索工具;基于”pattern“对给定文本进行搜索操作;

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

分两类:

基本正则表达式:BRE

扩展正则表达式:ERE

grep家族:

grep:  支持使用基本正则表达式;

egrep:支持使用扩展正则表达式;

fgrep:不支持使用正则表达式;

grep命令:

作用:文本搜索工具,根据用户指定的”pattern(过滤条件)“对目标文本逐行进行匹配检查;打印出符合条件的行;

常用选项:

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

-i:忽略字符大小写;

-o:仅显示匹配 到的文本自身;

-v, --invert-match:反向匹配;

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

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

基本正则表达式元字符:

字符匹配:

.:匹配任意单个字符;

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

[^ ]:匹配范围外的任意单个字符;

[:digit:],[:lower:], [:upper:], [:alpha:], [:alnum:], [:space:], [:blank:], [:punct:]

匹配次数:

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

*:匹配前面的字符任意次(0,1或多次);

.*:任意长度的任意字符;

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

\?:匹配前面的0次或1次,;

\{b\}:其前面的字符出现b次,b为非负整数;

\{b,d\}:其前面的字符出现b次,b为非负整数;最多b次,最少d次

\{0,n\}:至多n次;

\{m,\}:至少m次;

位置锚定:

限制使用模式搜索文本,限制模式所匹配到的文本只能出现于目标文本的哪个位置;

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

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

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

^$:空行;

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

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

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

\<PATTERN\>:单词锚定;

分组与引用:

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

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

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

常用选项之二:

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

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

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

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

-e PATTERN, --regexp=PATTERN:多模式机制;

-f FILE, --file=FILE:FILE为每行包含了一个pattern的文本文件,即grep script;

egrep:

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

扩展正则表达式的元字符:

字符匹配:

.:任意单个字符

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

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

匹配次数:

*:任意次;

?:0次或1次;

+:1次或多次;

{b}:匹配b次;

{b,d}:至少b次,至多d次;

{0,d}:至多d次

{b,}:最少b次

位置锚定:

^:行首

$:行尾

\<, \b:词首

\>, \b:词尾

分组及引用:

(pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;

或者:

a|b:a或者b

C|cat:表示C或cat

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

时间: 2024-12-24 13:30:42

Linux中不可或缺的“grep三人组”与正则表达式的那些事的相关文章

Linux中find、grep命令详细用法

在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1.find命令 find命令是一个无处不在命令,是linux中最有用的命令之一.find命令用于:在一个目录(及子目录)中搜索文件,你可以

linux中传文件的三种方法、windows

第一种方法:使用vsftpd服务 ftp配置文件主要内容:[[email protected] vsftpd]# cat vsftpd.conf|grep -v ^#|grep -v ^$anonymous_enable=YES #匿名登陆local_enable=YES #允许使用本地用户来登陆ftplocal_root=/var/ftp/pub #write_enable=YES #开放本地用户写的权限local_umask=022 #FTP上本地的文件权限,默认是077 anon_uplo

在 linux 中 find 和 grep 的区别??

Linux 系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. linux 下的 find: 功能:在目录结构中搜索文件,并执行指定的操作.此命令提供了相当多的查找条件,功能很强大.语法:find 起始目录寻找条件操作说明:find 命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的

linux中apache服务的三种不同访问方式

实验环境:使用Red Hat Linux-6.2 32位操作系统用于搭建apache服务,使用windows 7-32位作为客户机.下面是详细的操作步骤. 实验步骤:搭建好系统自带的httpd服务:①搭建httpd服务的虚拟目录,并访问:②搭建基于不同主机名的httpd访问服务,并访问:③搭建基于不同端口号的httpd访问服务,并验证. 首先是检查httpd服务的安装环境,一些必要的环境条件一定要有.然后直接启动httpd服务试试看,此时虽然可以启动服务但是会有一些提示,最好处理一下.Httpd

linux中DNS解析的三种修改方式

DNS域名解析,是将对应的域名匹配到ip地址上. 1.HOST本地DNS解析 # 修改本地hosts文件配置 vi /etc/hosts # 添加规则 223.231.234.33 www.baidu.com 2.网卡配置文件DNS服务地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 添加规则 例如: DSN1='114.114.114.114' 3.系统默认DNS配置 vi /etc/resolv.conf 添加规则 例如: nameserver

Linux中VIM编辑器的使用

vim编辑器是我们在Linux中不可或缺的一部分,我们通常会使用它去自定义编辑文本已达到我们的需求,那么vim文本编辑器具体要怎么使用呢.今天跟大家分享一下vim编辑器的使用: vim编辑器模式介绍 vim文本编辑器概述: 作用:创建或修改文本文件: 维护Linux系统中的各种配置文件. Linux中常用的文本编辑器: vi:类Unix系统中默认的文本编辑器: vim:vi编辑器的增强版本,习惯上也称为vi,我们可以将vim设置别名,以便执行vi时自动调用增强版编辑器.具体代码如下 [[emai

&lt;实训|第十一天&gt;学习一下linux中的进程,文件查找,文件压缩与IO重定向

[[email protected]~]#序言 在今后的工作中,运维工程师每天的例行事务就是使用free -m,top,uptime,df -h...每天都要检查一下服务器,看看是否出现异常.那么今天我们就讲解一下关于运维工程师例行事务的知识!  开班第十一天: [[email protected]~]#今天的课程大纲 查看进程,中断进程,切换进程 内存与swap分区 linux中文件查找的基本方法 linux中是如何解压缩文件的 关于I/O重定向的知识点 远程scp配合管道 详细讲解: [[e

linux中的时间分为那些?

1.1    Linux中的时间分为三种 1.mtime(modify time)   修改时间,文件/目录的修改时间,文件内容修改 2.ctime(change time)     改变时间,文件/目录的属性的变化,修改时间,大小,硬链接数,权限,所有者,所属组,类型 3.atime(access time)      访问时间,文件/或目录的访问时间,查看文件之后,内容没变化之前再次访问的话,访问时间不变化 使用stat查看文件详细信息 [[email protected] tmp]# st

Linux中grep、egrep正则表达式的使用

正则表达式的由来 正则表达式,英文写法Regular Expression,在编程语言中常被简写为regex.regexp等.它是用来描述.匹配一系列符合某个句法规则字符串的单个字符串. 正则表达式通常被用来检索.替换那些符合某个模式(Pattern)的文本. 1950年代,UNIX之父Ken Thompson将正则表达式引入编辑器QED,然后是编辑器ed,最终引入到grep中.从此,正则表达式被广泛地应用到了各种UNIX或类UNIX系统的工具之中,例如perl. 近些年来,主流操作系统.主流开