美文网首页
day14 课后笔记

day14 课后笔记

作者: 藏鋒1013 | 来源:发表于2019-03-22 16:16 被阅读0次

什么是正则表达式?

作用:和特殊字符一样。

就是为了处理大量的字符串及文本而定义的一套规则和方法。

开发者

假设"@"代表"I am","!"代表"oldboy",

则执行echo"@!"的结果就是输出"I am oldboy"。

2、提高效率,快速获取想要的内容。

3、三剑客命令grep(egrep)、sed、swk.

其工作是以行为单位,即一次处理一行。

4、实践讲解

易混肴事项:

1、和通配符区别。

2、开发人员正则。一般是Perl兼容正则表达式。

3、Linux系统三剑客正则表达式*****。

正则表达式分类:

基本正则grep(BRE):

^尖角号以……开头,^oldboy 以oldboy开头

$ 美元符 oldboy$ 以oldboy结尾

^$ 空行

. 匹配任意一个且只有任意一个字符,和通配符?一样

\ 让有意义的字符脱掉马甲 还原本义

* 重复前面字符0次或多次

.* 表示所有内容

^.* 组合符 匹配任意以0个或多个字符开头的内容

.*$ 组合符以任意0个或多个字符结尾

[abc] 匹配[]集合内的任意一个字符a或b或c ;[abc]也可以写成[a-c]

[^abc] 匹配不包括^后面的一个字符a或b或c 

扩展正则egrep(ERE):

+ 匹配一个字符一次或多次

[:/]+ 匹配括号内的:或/字符一次或一次以上

? 匹配前一个字符0次或一次

| 或者同时过滤多个字符串

() 分组过滤被括起来的东西,表示一个整体

\n 引用()小括号前面的内容 例如:(aa)\1,匹配aaaa

a{n,m} 匹配前一个字符最少n次,最多m次

a{n,} 匹配前一个字符最少n次

a{n} 匹配前一个字符正好n次

a{,m} 匹配前一个字符最多m次

特殊中括号:

[:digit:] 匹配任意一个数字字符,相当于[0-9]

[:lower:] 匹配小写字母,相当于[a-z]

[:upper:] 匹配大写字母,相当于[A-Z]

元字符:

\b 匹配单词边界 类似grep -w

\d 匹配单个数字字符 

Linux三剑客:

awk  sed  grep:

sed:

Sed是操作、过滤和转换文本内容的强大工具。

常用功能有对文件实现快速增删改查(增加、删除、修改、查询),

其中查询的功能中最常用的2大功能是过滤(过滤指定字符串)和取行(取出指定行)。

sed [选项]  [sed内置命令字符]  [文件]

选项:

-n 取消默认sed的输出,常与sed内置命令的p连用※

-i 直接修改文件内容,而不是输出到终端。

如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件※

sed的内置命令字符说明

s 替换

g 全局global

p 打印print

d 删除delete

练习:

环境:

[root@oldboyedu ~/test]# cat oldgirl.txt

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

our site is http://www.oldboyedu.com

my qq num is 49000448.

问题1:输出oldboy.txt的第2-3行内容※。

sed -n '2,3p' oldgirl.txt

问题2:过滤出含有oldboy字符串的行※。

grep oldboy oldgirl.txt

问题3:删除含有oldboy字符串的行※。

sed '/oldboy/d' oldgirl.txt

问题4:将文件中的oldboy字符串全部替换为oldgirl※。

sed 's#oldboy#oldgirl#g' oldgirl.txt

问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。

sed -e 's#oldboy#oldgirl#g' -e 's#49000448#31333741#g' oldgril.txt

相关文章

网友评论

      本文标题:day14 课后笔记

      本文链接:https://www.haomeiwen.com/subject/paugmqtx.html