正则介绍、grep

正则介绍

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

其实正则表达式只是一种思想、一种表示方法。只要我们使用的工具支持这种表示方法,那么这个工具就可以处理正则表达式的字符串。常用的工具grep、sed、awak等。

grep命令

grep是用来过滤指定关键词的。

grep是一种强大的文本搜索工具,它能使用特定模式匹配搜索文本,并默认输出匹配行。grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep [cinvABC] ‘word‘ filename

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

-i 表示忽略大小写

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

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

-r 递归的读取目录下的所有文件,包括子目录。

比如grep -r ‘root’/etc/ 会找出/etc/目录及子目录下的所有文件中,含有root字符串的行。

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

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

-C 后跟一个数字,例如-C 2 表示打印合格要求的行已经上下两行。

grep后不跟任何参数。

查找出文件passwd中带有字符串nologin的行。

grep -c

打印出文件passwd中含有nologin字符串的行数(有几行含有nologin。)

[[email protected] grep]# grep -c ‘nologin‘ /root/grep/passwd

17

grep -n

输出符合要求的内容,并显示行号。

grep -i

忽略大小写。

grep -v

取反,打印不符合要求的行。

在passwd文件中查找不含有nologin字符串的行。

grep -r

递归的读取目录下的所有文件,包括子目录。

比如grep -r ‘root’/etc/ 会找出/etc/目录及子目录下的所有文件中,含有root字符串的行。

grep -A

后面跟数字n,表示符合要求的行及下面n行。

grep -B

后面跟数字n,表示符合要求的行及上面n行。

grep -C

后面跟数字n,表示符合要求的行及上下n行。

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

打印出文件中含有数字1-9其中一个的行。

grep -v ‘[0-9]‘ /etc/inittab

打印出文件中不含有数字0-9其中一个的行。

grep ‘^#‘ /etc/inittab

打印出文件中以#开头的行。

grep -v ‘^#‘ /etc/inittab

打印出文件中不以#开头的行。

再正则表达式中,^表示行的开始,$表示行的结尾,空行则可以用^$表示。

grep ‘^&‘ inittab

打印出文件中的空行。

grep -v ‘^&‘ inittab

打印出文件中的非空行。

[^字符]表示除[]内字符之外的字符。^有非的意思。

grep -n ‘^[^0-9]‘ inittab

打印出开头不为数字的行,并显示行号。

grep -nv ‘^[^0-9]‘ inittab

打印出开头为数字的行和空行,并显示行号。

grep -n ‘[^0-9]‘ inittab

打印出整行不为数字的行,并显示行号。

grep -nv ‘[^0-9]‘ inittab

打印出整行为数字的行和空行,并显示行号。

.表示任意一个字符。r.o表示r与o之间一个任意字符。

*表示零个或多个*前面的字符ooo*表示o、oo、ooo、oooo或者更多o。

grep -n ‘r.o‘ test

grep -n ‘o*o‘ test(*表示0个或多个*前面的字符)#查找文件中 1个o两个o或者更多o的行。

匹配*前面的g,且还要匹配g之前必须是huan。

grep -n ‘a*c‘ test 可以匹配到:

只含有字母c的,只含有字母a的,含有字母ac的

不能匹配到:不含字母a或字母c的。

.*表示零个或多个任意字符,空行也包含在内。

grep ‘.*‘ passwd

匹配passwd中的所有字符。

{n},n为数字,表示{}前面的字符重复n次。需要注意的是{}左右都要加上转移字符\。{}还可以表示范围,{n1,n2}其中n1<n2,表示重复n1到n2次前面的字符,n2可以为空,表示大于等于n1次。

+表示匹配+前面的字符出现1个或多次(*匹配*前面的字符出现0次或多次)

grep使用+时需要用\ 转义

egrep使用+时不需要用\ 转义

?表示匹配?前面出字符出现0次或1次

grep使用?时需要用\ 转义

egrep使用?时不需要用\ 转义

|(数线)表示或者的意思

grep使用|时需要用\ 转义

egrep使用|时不需要用\ 转义

()表示一个整体

grep使用|时需要用() 转义

egrep使用|时不需要用() 转义

grep -n ‘\(aa\)\+‘ abc  过滤出含有一个或多个aa字符串的。

注意:grep命令使用:{}、+、?、|、()这些符号时需要加上转义符\。egrep 命令使用时不需要加转义符\。

时间: 2024-11-09 09:40:42

正则介绍、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

正则表达式,又称规则表达式,英文名为Regular Expression,在代码中常简写为regex.regexp或RE,是计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑.

正则介绍 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介绍

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

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,表示全局正则表达式版本