正则介绍grep

正则表达式,又称规则表达式,英文名为Regular Expression,在代码中常简写为regex、regexp或RE,是计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

grep工具

该命令的格式为:grep [-cinvABC]‘word’ filename,其常用的选项如下所示。

-c 表示打印符合要求的行数。

-i 表示忽略大小写。

-n 表示输出符合要求的行及其行号。

-v 表示打印不符合要求的行。

-A 后面跟一个数字(有无空格都可以),例如-A2表示打印符合要求的行以及下面两行。

-B后面跟一个数字,例如-B2表示打印符合要求的行以及上面两行。

-C 后面跟一个数字,例如-C2表示打印符合要求的行以及上下各两行。

过滤出带有某个关键词的行,并输出行号

示例命令如下:

#grep –n ‘root’ /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

10:operator:x:11:0:operator:/root:/sbin/nologin

过滤出不带有某个关键词的行,并输出行号

示例命令如下:

#grep –nv ‘root’ /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

6:sync:x:5:0:sync:/sbin:/bin/sync

过滤出所有包含数字的行

示例命令如下:

#grep ‘[0-9]’ /etc/inittab

#multi-user.target:analogous to runlevel 3

#graphical.target:analogous to runlevel 5

过滤出所有不包含数字的行

示例命令如下:

#grep –v ‘[0-9]’ /etc/inittab

过滤掉所有以#开头的行

示例命令如下:

#cat /etc/sos.conf

[plugins]

[tunables]

#rpm.rpmva = off

#general.syslogsize = 15

#grep –v ‘^#’ /etc/sos.conf

[plugins]

[tunables]

过滤掉所有空行和以#开头的行

示例命令如下:

#grep –v ‘^#’ /etc/sos.conf |grep –v ‘^#’

[plugins]

[tunables]

过滤出任意一个字符和重复字符

示例命令如下:

#grep ‘r.o’ /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

.表示任意一个字符。上例中,r.o表示把r与o之间有一个任意字符的行过滤出来。

#grep ‘ooo*’ /etc/passwd

root:x:0:0:root:/root:/bin/bash

*表示零个或多个*前面的字符。上例中,ooo*表示oo、ooo、oooo……或更多的o。

指定要过滤出的字符出现次数

示例命令如下:

#grep ‘o\{2\}’ /etc/passwd

符号{ },其内部为数字,表示前面的字符要重复的次数。需要强调的是,{}作用都需要加上转义字符\。另外使用“{ }”还可以表示一个范围,具体格式为{n1,n2},其中n1<n2,表示重复n1到n2次前面的字符,n2还可以为空,这时表示大于等于n1次。

egrep工具

egrep 是grep的扩展版本,可以完成grep不能完成的工作。下面介绍egrep不同于grep的几个用法。为了试验方便,先编辑一个test.txt,其内容如下:

rot:x:0:0:rot: /bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

1111111111111111111111111111

aaaaaaaaaaaaaaaaaaaaaaaaa

过滤出一个或多个指定的字符

示例命令如下:

#egrep ‘o+’ test.txt

rot:x:0:0:rot: /bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

#egrep ‘oo+’ test.txt

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

#egrep ‘ooo+’ test.txt

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

和grep不同,这里egrep使用的是符号+,它表示匹配1个或多个+前面的字符,这个“+”是不支持被grep直接使用的。包括上面的{},而egrep可以,而不用加\转义。示例如下:

#egrep ‘o{2}’ /etc/passwd

root:x:0:0:root:/root:/bin/bash

过滤出零个或一个指定的字符

示例命令如下:

#egrep ‘o?’ test.txt

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

1111111111111111111111111111

aaaaaaaaaaaaaaaaaaaaaaaaa

#egrep ‘ooo?’ test.txt

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

#egrep ‘oooo?’ test.txt

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

过滤出字符串1或字串符2

示例命令如下:

#egrep ‘aaa|111|ooo’ test.txt

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

1111111111111111111111111111

aaaaaaaaaaaaaaaaaaaaaaaaa

egrep中()的应用

示例命令如下:

#egrep ‘r(oo|at)o’ test.txt

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

这里用()表示一个整体,上例中会把包含rooot或者rato的行过滤出来,另外也可以把()和其他符号组合在一起,例如(oo)+就表示1个或者多个oo。如下所示:

#egrep ‘r(oo)+’ test.txt

operator:x:11:0:operator:/root:/sbin/nologin

operator:x:11:0:operator:/rooot:/sbin/nologin

roooot:x:0:0:rooooot: /bin/bash

时间: 2024-08-29 02:13:35

正则介绍grep的相关文章

9.1-9.3 正则介绍 grep上 中 下

六周第一次课(3月12日) 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data/ 9.1 正则介绍_grep(上) 介绍 本章将要学习 grep/egrep.sed.awk egrep是grep升级版 test1 [[email protected] ~]# mkdir grep [[email protected] ~]# cd

正则介绍 grep

什么是正则 1.grep 的常用选项 grep 是用来过滤指定关键词的.具体操作,见下图,grep 有个比较好的特点,自带颜色在过滤关键词上.不加颜色的话,就使用绝对路径,见下图,不加颜色的话,看起来比较费劲.接着来看一下各个选项的作用,见下图,-c 查看行数,-n 显示行号,-i 不区分大小写的话,先来编辑一下 passwd 文件,进入下图,将上图中红色框框的位置,改动三个字母为大写字母 NOL ,保存后退出.接着下图操作,让 -n 与 -ni 做对比之后,不难发现, -ni 的结果多了第2行

9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

9.1 正则介绍_grep上  9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data/ # 9.1 正则介绍 grep 上 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170822/222929890.png?imageslim) ``` [[email protected] ~]# ls 111  1_hea

正则介绍_grep

9.1 正则介绍grep上 正则是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串. 语法: grep [-cinvABC] 'word' filename -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 -v :打印不符合要求的行 -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行 -C :后跟一个数字,例如 –C2 则表

linux的正则、grep及egrep介绍

正则介绍: 解释对"正则表达式"的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.在很多文本编辑器或其他工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容.许多程序设计语言也都支持利用正则表达式进行字符串操作.对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,还是查询某个日志文件并分析其内容,都会用正则表达式. 其实正则表达式只是一种思想.一种表示方法.只要我们使用的工具支持这种表示方法,那么这个工具就可以处理正则表达式的字符

正则介绍、grep

正则介绍 在计算机科学中,对"正则表达式"的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.在很多文本编辑器或其它工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容.许多程序设计语言也都支持利用正则表达式进行字符串操作.对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作和中,物理李娜是查找某个文档,还是查询某个日志文件并分析其内容,都会用到正则表达式. 其实正则表达式只是一种思想.一种表示方法.只要我们使用的工具支持这种表示方法,那么这个工具就可以处

9.1 正则介绍_grep(上);9.2 grep(中);9.3 grep(下)

扩展 把一个目录下,过滤所有*.php文档中含有eval的行 : # grep -r --include="*.php" 'eval' /data/ 9.1 正则介绍_grep(上) 正则是什么? ? 正则就是一串有规律的字符串 ? 掌握好正则对于编写shell脚本有很大帮助 ? 各种编程语言中都有正则,原理是一样的 1.创建目录:                    mkdir grep 2.进入目录:                    cd grep 3.拷贝文件到当前目录:

六周第一次课(1月15日) 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

六周第一次课(1月15日)9.1 正则介绍_grep上9.2 grep中9.3 grep下 在计算机科学中,对"正则表达式" 的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.在很多文本编辑器或其他工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容.许多程序设计语言也都支持利用正则表达式进行字符串操作.对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,还是查询某个日志文件并分析其容,都会用到正则表达式.其实正则表达式只是一种思

Linux CentOS7 VMware正则介绍、grep工具、egrep表达式

一.正则介绍 正则是学习shell脚本的必学的内容,正则学的好坏直接影响到shell编程能力. 正则表达式:使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.通常用来检索和替换那些符合某个模式的文本内容.正则表达式贯穿到整个运维日常,无论是查找某个文件,还是查询某个日志文件并分析其内容均用到. 正则表达式是一种思想,一种表示方法.常用的工具grep.sed.awk三剑客. 二.grep上 grep全称是Global Regular Expression Print,表示全局正则表达式版本