Linux正则表达式及三剑客知识应用实践
一、正则表达式
正则表达式是为了处理大量的字符串及文本而定义的一套规则和方法。
可以提高效率,快速获得想要的到的内容;
适用于三剑客命令:grep(egrep),sed,awk,工作时以行为单位进行处理。
二、易混淆事项
1、和通配符区别
2、开发正则,一般是Prel兼容正则表达式
3、linux系统三剑客正则表达式。
三、正则表达式分类:
1、BRE 基本正则表达式
^ 匹配以。。。开头的行
$ 匹配以。。。结尾的行
^$ 空行
. 匹配任意一个且只有一个字符
\ 转义字符,让原本有意义的字符脱掉马甲,还原本意
* 匹配前一个字符0次或多次
.* 匹配所有内容
^.* 匹配任意一个或多个字符开头的内容
.*$ 匹配任意一个或多个字符结尾的内容
[abc] 匹配[ ]内任意一个字符a或b或c
[^abc] 匹配不包含^后任意字符a或b或c
2、扩展正则表达式
+ 匹配前面一个字符1次或多次
[]+ 匹配[]内任意一个字符1次或多次
?匹配前一个字符0次或1次
| 或者 同时过滤多个字符串
() 分组过滤括号括起来的内容,表示一个整体
\n 引用前面()里的内容
a{n,m} 表示匹配一个字符最少n次最多m次
a{n,}表示匹配一个字符最少n次
a{n}表示匹配一个字符n次
a{,m}表示匹配一个字符最多m次
四、Linux三剑客
awk、sed、grep
1、sed
sed是操作、过滤和转换文本内容的强大工具。
常用功能有与文件实现快速增删改查。
其中查询的功能中最常用的两大功能是过滤(过滤指定位字符串)和取行(取出指定行)。
语法格式:sed [选项] [sed内置命令字符] [输入文件]
选项:
-n 取消默认sed的输出(只显示过滤内容),常于sed内置命令的p连用*****
-i 直接修改文件内容,而不是输出到终端。
如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件*****
sed的内置命令字符功能说明
s 替换
g 全局
p 打印
d 删除
实践练习:
1、输出oldboy.txt的第2-3行内容。*****
sed -n '2,3p' oldboy.txt
2、过滤出含有oldboy字符串的行*****
sed -n '/oldboy/p' test.txt
3、删除含有oldboy字符串的行。*****
sed '/oldboy/d' test.txt
4、将文件中的oldboy字符串全部替换为oldgirl。*****
sed 's#oldboy#oldgirl#g' test.txt