Day14课堂笔记

第一章

1.1正则表达式

1、作用和特殊字符一样。

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

开发者:

假设“@”代表“i am”。“!”代表“oldboy”,

则执行echo“@!”的结果就是输出“i am oldboy”。

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

3、适用于三剑客命令 grep(egrep),sed,awk

以行为单位处理。

4、实践来讲解

易混淆事项:

a、和通配符区别

b、开发人员正则,一般是perl兼容正则表达式。

c、linux系统三剑客正则表达式。*****

环境准备:

export LC_ALL=C

分类:

1、BRE 基本正则表达式  grep

^...   以...开头,^oldboy 以oldboy开头。

...$  以...结尾, oldboy$  以oldboy结尾。

^$ 空行。

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

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

[root@shizhenghao ~/test]# grep "\.$" oldboy.txt

I teach linux.

my qq num is 49000448.

not 4900000448.

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

.* 表示所有内容

^.* 以任意多个字符开头的内容

.*$ 以任意多个字符结尾的内容

【abc】 匹配任意一个字符a或b或c;也可写成【a-c】

【^abc】匹配不包含^后的任意字符a或b或c

[root@shizhenghao /test]# mkdir -p /data/oldboy

[root@shizhenghao /test]# ls -l /data/

total 0

drwxr-xr-x 2 root root 6 Mar 19 17:16 oldboy

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

drwxr-xr-x 2 root root 6 Mar 19 17:16 oldboy

2、ERE扩展正则表达式   egrep

+匹配前一个字符1次或1次以上

【:/】+ 匹配括号内的:或/字符1次或1次以上

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

es?    e es

es*   e es ess essssss essssssssss

| 同时匹配多个字符串

[root@shizhenghao ~/test]# egrep "oldboy|like" oldboy.txt

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

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

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

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

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

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

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

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

元字符:

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

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

I am oldboy teacher!

\d 匹配单个数字字符,注意,这个表达式需要使用grep -P参数才能识别

[root@shizhenghao ~/test]# grep -P "\d" oldboy.txt

my qq num is 49000448.

not 4900000448.

第二章 linux三剑客

sed  :stream editor 流编辑器

语法格式:

sed [参数]  [sed内置命令字符]  [文件]

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

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

-e 允许多次编辑

sed的内置命令字符说明

s  替换 ,常与g匹配做全局的替换

g  全局global

p  打印print,常与参数-n 一起使用

d  删除delete

过滤出带有oldboy的行:

[root@shizhenghao ~/test]# grep "oldboy" oldboy.txt

I am oldboy teacher!

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

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

I am oldboy teacher!

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

删除带有oldboy字符串的行:

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

I like badminton ball ,billiard ball and chinese chess!

my qq num is 49000448.

加-i 修改内容是直接修改文件内容

-e 可一条命令多次编辑

[root@shizhenghao ~/test]# sed -e 's#oldboy#oldgirl#g' -e 's#49000448#31333741#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 31333741.

你可能感兴趣的:(Day14课堂笔记)