正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式
正则表达式是由普通字符与元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符
基础正则表达式常见元字符(支持的工具:grep、egrep、sed、awk)
①\ 转义字符,用于取消特殊符号的含义,例:\!、\n、\$等
②^ 例 : ^name 表示匹配以name单词开始的行
[root@localhost ~]# grep ^root /etc/passwd
**root**:x:0:0:root:/root:/bin/bash
[root@localhost ~]# ll |grep ^d
**d**rwxr-xr-x. 2 root root 6 3月 29 16:58 bak
③$ 例 : name$ 表示匹配以name单词结尾的行
[root@localhost ~]# ll |grep bak$
drwxr-xr-x. 2 root root 6 3月 29 16:58 **bak**
④^$ 空行
[root@localhost ~]# grep -n ^$ /etc/profile #输出空行并打印行号
2:
5:
⑤. 表示匹配一个且任意一个字符(不能匹配空行)
[root@localhost ~]# grep ^r..t /etc/passwd
root:x:0:0:root:/root:/bin/bash
⑥* 匹配前一个字符(连续出现)0次或1次以上
⑦.* 匹配任意
⑧[集合] 匹配集合中的任意单个字符
⑨[^集合] 对集合取反
⑩\{n,m\} 匹配前一个字符n到m次 #egerp awk 使用时不加\
\{n,\} 匹配前一个字符至少n次
\{n\} 匹配前一个字符n次
\d 匹配一个数字字符相于[0-9]
\D 匹配一个非数字字符相于[^0-9]
\w 匹配包括下划线的任意单词字符
\W 匹配包括下划线的任意非单词字符
\s 空白符
\S 非空白符
扩展正则元字符
+ 匹配前面的字符至少一次 #支持egrep awk grep -E sed -r
? 匹配前面的字符0或1次
() 组合与保留
| 或者
grep
用法:grep [选项] 匹配模式 [文件]···
常用选项:
-i 忽略大小写
-V 取反匹配
-W 匹配单词
-q 静默匹配,不将结果显示在屏幕
sed
流式编辑器
-非交互式
-逐行处理
-可以对文本进行增、删、改、查等操作
用法: sed [选项] '[定位符]指令' 文件名
命令 | sed [选项] '[定位符]指令'
常用选项:
-n 屏蔽默认输出
-i 直接修改源文件
-r 支持扩展正则
①行号定位
[root@localhost ~# sed -n '3p' /etc/passwd #打印第3行
[root@localhost~#sed -n '1,3p' /etc/passwd #打印1到3行
[root@localhost~#sed -n'1~2p' /etc/passwd #第1行开始,步长为2
[root@localhost~#sed -n '2~2p' /etc/passwd #第2行开始,步长为2
[root@localhost~]#sed -n '2,+3p'/etc/passwd #第2行以及后面的3行
②正则定位
[root@localhost~# grep ^root /etc/passwd #过滤root开头的行
[root@localhost~]#sed -n '/^root/p' /etc/passwd
[root@localhost~]# egrep "[0-9]{3}" /etc/passwd #过滤包含3个数字的行
[root@localhost~# sed -rn '/[0-9]{3}/p' /etc/passwd
③sed 修改文件
p:打印行
d:删除行 #不使用-i ,源文件不会被修改
[root@localhost ~# sed 'd' /etc/hosts #删除/etc/hosts全文,没有定位条件等于匹配所有行
[root@localhost ~# cat /etc/fstab>/tmp/fstab
[root@localhost ~# sed '1,3d' /tmp/fstab #1到3行都删除
[root@localhost ~]# sed '/dev/!d' /tmp/fstab #不包含dev的行都删除
[root@localhost ~]# sed '/^#/d’ /tmp/fstab #删除所有以#符号开头的行
[root@localhost ~# sed ‘/^$/d ‘ :/tmp/fstab #删除空白行
c:替换行
s:替换关键词
s/OLD/NEW/ 2代表对每行第二个匹配到的字符进行替换 #替换符/可用其他 字符代替
g代表对每行所有能匹配到的字符进行替换
P可以结合-n 选项只打印替换的行内容
W可以把替换的行内容保持到指定的文件里
n,m s/OLD/NEW/ #第几行到第几行替换
s/^/添加的字符/ #在行首添加内容
s/$/添加的字符/ #在行尾添加内容
=:打印行号
④sed多行文本处理
i:插入
z:追加
r:读取文件|导入文件内容.
w:文件另存为|导出文件内容