一、正则表达式
1.1 egrep命令
- grep 和 egrep作用相似,egrep 等同于 grep -E,就是支持了扩展正则表达式
- 常用的选项
-i
:忽略大小写-v
:对结果取反-c
:统计匹配的行数-q
:静默,无任何输出,通常配合$?进行检测
效果类似于正常的egrep操作添加了&> /dev/null来屏蔽输出。在脚本中当需要检测文本内是否存在指定的关键词时,可以利用egrep -q的返回状态值来作为判断依据,从而简化&>输出的操作。-n
:显示匹配结果行号--color
:标红匹配字段
1.2 正则表达式
-
基本正则表
-
拓展正则表
补充两个:
{n}
:匹配前一个字符n次
{n, }
:匹配1前一个字符n次及以上
注意:\b 的位置不能出现数字字符下划线和符号
拓展正则表是对基本正则表中后四个的优化。
-
常用正则
.*
:代表通配符,匹配所有,包括空行,而 . 不能匹配空行^$
:代表匹配空行
-
案例
匹配11位手机号
15940401491
1589562
13872375901
13177029023
1358954
abd152dwqewq
159saesa256
[root@shell ~]# egrep '^[0-9]{11}\b' num
15940401491
13872375901
13177029023
二、sed 流式编辑器
-
特点:可以对文档进行非交互式的增删改查,逐行进行处理
-
使用格式:sed 选项 '条件 指令' 文档
这里的条件也叫做定址符(执行指令的条件)控制sed需要处理文本的范围;不加定址符则逐行处理所有行
注意:条件和指令之间可以空格,也可不空格 -
常用选项
-n
:屏蔽默认(原始)输出(sed默认会将原始文本和变动文本都输出)-i
:修改文件内容(不加时可用作测试)-r
:启用扩展正则,若与其他选项一起用,则应写到第一个
-
条件(定址符):可以使用
数字
当做行号或者正则表达式
,使用正则的话需要将正则表达式用 / / 括起来
输出以root开头的行。 -
常用指令
-
p
:打印行- !p:对输出取反(同样适用于d指令)
- $p:最后一行(同样适用于d指令)
- 常用案例
- 补充案例
- 获取奇数行: sed -n ‘1~2p’
- 获取奇数行: sed -n ‘2~2p’
- 解释定址符 a~b 的用法
a~b代表:从第a行开始,每b行打印一次
-
d
:删除行- 常用案例
- 常用案例
-
s
:字符串替换- 常用案例
- 常用案例
-
=
:输出行号
有一个用处,获取最后一行的行号,$= 就是最后一行的行号
-
-
补充指令(对文本块的处理)
i
:行前插入文本a
:行后插入文本c
:替换当前行
注意:在插入文本时,文本不能加双引号,即便是文本中间有空格也不需要。