2019-03-19课堂笔记

3月19号

什么是正则表达式?

作用和特殊字符一样。

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

开发者

假设“@”代表“I am”,“!”代表“oldboy”,

则这姓echo“@!”的结果就是输出I am oldboy

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

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

2、三剑客命令grep(egrep),sed,awk

以行为单位处理

3、实践来讲解

易混淆的事项

1.和通配符区别

2.开发正则,一般是perl兼容正则表达式。

3.Linux三剑客正则表达式

export LC_ALL=C

分类:

1.BRE基本正则表达式  (grep)

2. Ere扩展正则表达式  (egrep)

[root@oldboyedu ~/test]# grep "^I" oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

[root@oldboyedu ~/test]# ls /data

a.txt    aa.txt    b.txt     c.txt  f.txt  test.txt

[root@oldboyedu ~/test]# mkdir /data/oldboy

[root@oldboyedu ~/test]# ls -l /data

total 0

-rw-r--r--. 1 root root 0 Oct  4 23:28 a.txt

-rw-r--r--. 1 root root 0 Oct  4 23:28 aa.txt

-rw-r--r--. 1 root root 0 Oct  4 23:28 b.txt

-rw-r--r--. 1 root root 0 Oct  4 23:38 c.txt

-rw-r--r--. 1 root root 0 Oct  4 23:38 f.txt

drwxr-xr-x. 2 root root 6 Oct  5 01:08 oldboy

-rw-r--r--. 1 root root 0 Oct  4 23:28 test.txt

[root@oldboyedu ~/test]# ls -l /data|grep "^d"

drwxr-xr-x. 2 root root 6 Oct  5 01:08 oldboy

特殊预定义中括号表达式

[root@oldboyedu ~/test]# egrep "[0-9]" oldboy.txt

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]#

[root@oldboyedu ~/test]# egrep "[[:digit:]]" oldboy.txt

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]# egrep "[[:lower:]]" oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

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

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu ~/test]# egrep "[[:upper:]]" oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

my god ,i am not oldbey,but OLDBOY! 

[root@oldboyedu ~/test]# egrep "\boldboy\b" oldboy.txt

I am oldboy teacher!

[root@oldboyedu ~/test]# egrep "oldboy" oldboy.txt

I am oldboy teacher!

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

[root@oldboyedu ~/test]# egrep -w "oldboy" oldboy.txt

I am oldboy teacher!

三剑客:grep  sed(Stream editor 流编辑器)awd

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

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

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

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

选项:

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

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

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

ed的内置命令字符说明

s替换

g全局global

p打印print

d删除delete

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

root@guohaoxiang~/test]# sed -n '2,3p' oldboy.txt #<==n

I like badminton ball ,billiard ball and chinese chess!

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

问题2;过滤出含有oldboy的字符

[root@guohaoxiang~/test]# sed -n '/oldboy/p' oldboy.txt

I am oldboy teacher!

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

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

[root@guohaoxiang~/test]# sed '/oldboy/d' oldboy.txt

I like badminton ball ,billiard ball and chinese chess!

my qq num is 49000448.

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

Vim替换:

sed "s/oldboy/oldgirl/ig" test.txt 

Sed ‘s#像替换什么#用什么替换#g’ oldgirl.Txt

问题4:将文件zho将文件中的oldboy字符串全部替换为oldgirl同时将qq号码49000448改为12345678

[root@guohaoxiang~/test]# sed -e 's#oldboy#oldgirl#g' -e 's#49000448#12340569#g' oldboy.txt

I am oldgirl teacher!

I like badminton ball ,billiard ball and chinese chess!

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

my qq num is 12345678.

你可能感兴趣的:(2019-03-19课堂笔记)