正则表达式1

1. 正则表达式

在计算机科学中,对“正则表达式”的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串。在很多文本编辑器或其它工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容。许多程序设计语言也都支持利用正则表达式进行字符串操作。

其实正则表达式只是一种意思、一种表示方法。只要使用的工具支持这种表示方法,那么这个工具就可以处理正则表达式的字符串。常用的工具有:grep\egrep、sed、awk等,其中grep、sed和awk都是针对文本的行进行操作的。

2. grep工具

grep命令的格式为:grep【-cinvrABC】‘word’filename,其常用的选项如下:

-c:表示打印符号要求的行数;

-i:表示忽略大小写;

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

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

-r:遍历所有子目录;

-A:后面跟一个数字,过滤出符合要求的行及下面n行;

-B:后面跟一个数字,过滤出符合要求的行及上面n行;

-C:后面跟一个数字,同时过滤出符合要求的行及上下各n行;

创建一个目录,将/etc/passwd这个文件,复制到该目录下;

grep命令自动加了一个color选项,在匹配的时候会将关键词标记;



显示行数和行号;


   编辑passwd这个文件,将其中的一个‘nologin’换为大写;


使用-n查看,不会显示大写的那一行;


必须要加上-i选项,才会显示大写的部分;


使用-v查看,显示没有‘nologin’的行;


使用-r查看,遍历所有目录;


分别查看匹配出符合要求的行及上面2行、匹配出符合要求的行及下面2行、匹配出符合要求的行及上下各2行;


3. grep/egrep实例

‘grep '[0-9]' passwd’,匹配出包含数字的行;


匹配出不包含数字的行;


将/etc/inittab复制到当前目录下,修改该文件;匹配不带#号的行;


匹配非数字

[^0-9]  非数字(包括字母+特殊符号)

[^a-zA-Z] 非字母(包括数字+特殊符号)

[^0-9a-zA-Z]非数字字幕(特殊符号)


匹配非方括号里面的内容开头的所有字符(^【^】);


这里的‘.’表示任意的一个字符;


匹配‘n个r,结尾是o’的字符串;


‘.*’表示文件的全部字符;


匹配某一行;


匹配出现两个0的行;


不带脱义符号,使用egrep(grep -E);


修改passwd文件内容,在其中两行增加0,匹配‘00’出现两次的行;


匹配0与多个0(从1开始);


匹配?个o(0个或1个),以t结尾;


匹配‘root’或‘nologin’;


‘|’表示或者,可匹配多个;