Linux正则表达式与三剑客知识应用实践
1、什么是正则表达式?
作用和特殊字符一样。
正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。
开发者
假设"@"代表“I am”,"!"代表“oldboy”,
则执行echo "@!"的结果就是输出“I am oldboy”。
^尖叫号 以...开头,^oldboy 以oldboy开头
$美元符 以...结尾 oldboy$ 以oldboy结尾
^$空行 $ 叨re
. 代表任意一个字符,和通配符? 不匹配空行
\让有意义的字符 脱掉马甲 还原本义
*表示所有内容
^.* 匹配以任意0个多个字符开头的内容
.*$ 以任何0个或多个字符结尾
[abc] 匹配[]集合内的任意一个字符a或者b或c or
[^abc] 匹配不包括^后的任意字符a或b或c
2 扩展正则(ERE) egrep
+ 匹配前一个字符1次或一次以上
[:/]+ 匹配:或者/一次或多次
? 匹配前一个字符0或1次
| 分组,或者同时过滤多个字符串
() 分组过滤被括起来的东西表示一个整体
\n ()的内容可以被\n引用
a{n,m} 匹配前一个字符最少n次,最多m次
a{n,} 匹配前一个字符最少n次
a{n} 匹配前一个字符正好n次
a{,m} 匹配前一个字符最多m次
3 元字符表达式
\b 匹配单词边界 -w 过滤出有该单词的一行
\d 匹配单个数字
grep -p -p 用于过滤Perl兼容正则表达式
三剑客:
awk sed grep
sed 流编辑器
(选项)
-n 取消命令的默认输出 sed -n '2,3p'
-i 修改文件,而不是输出到终端
-e 多次编辑
-r 支持拓展正则
如果不使用-i选项sed只修改内存中的数据,不影响磁盘上的文件
sed内置命令符说明
s 替换
g 全局 global
p 打印 print
d 删除 delete
/过滤
a向下
i向上
's# # #g' 文件名 前替换后
sed
ifconfig eth0|sed -n 2p|sed 's#^.*inet##g'|sed 's#netm.*$##g' 10.0.0.201