一、正则表达式的意义
处理大量的字符串
处理文本
通过特殊符号的辅助,让Linux管理员快速过滤、替换、处理所需要的字符串、文本,让工作高效。
二、Linux三剑客
文本处理工具,均支持正则表达式引擎
grep:文本过滤工具(模式:pattern)
sed :stream editor,流编辑器,文本编辑工具
awk :Linux的文本报告生成器(格式化文本),Linux上是gawk
三、基本正则表达式BRE集合
匹配字符
匹配次数
位置瞄定
四、扩展正则表达式ERE集合
扩展正则必须用grep -E才能生效
五、grep命令
作用:文本搜索工具,根据用户指定的模式(过滤条件),对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式的元字符及文本字符所编写的过滤条件。
语法:grep [options] [pattern] file
grep命令实践
注:^:表示以某字符为开头
.:表示任意0或者多个字符
.* :表示匹配所有内容
.*o:一直到字母o结束(匹配到相同字符到最后一个字符的特点,称之为贪婪匹配)
[a-z]:匹配所有小写单个字母
[A-Z]:匹配所有单个大写字母
[a-zA-Z]:匹配所有的单个大小写字母
[0-9]:匹配所有单个数字
[a-zA-Z0-9]:匹配所有数字和字母
扩展正则表达式grep -E
+号:表示匹配前一个字符1次或者多次,必须用grep -E扩展正则
?号:表示匹配前一个字符0次或者1次
| 符:或者的意思
())小括号:将一个或者多个字符捆在一起,当做一个整体进行处理
注:小括号功能之一是分组过滤被括起来的内容,括号内的内容表示一个整体
括号()内的内容可以被后面的”\n“正则引用,n表示数字,表示引用第几个括号的内容
\1:表示从左侧起,第一个括号中的模式所匹配到的字符
\2:表示从左侧起,第二个括号中的模式所匹配到的字符
{n,m}匹配次数:重复前一个字符的各种次数,可以通过-o 参数显示明确的匹配过程
六、sed命令
sed是字符流编辑器,简称流编辑器。sed是操作、过滤和转换文本内容的强大工具
常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中,最常用的两大功能是过滤(过滤指定的字符串)、取行(取出指定的行)
语法:sed 【选项】 【sed内置命令】【输入文件】
选项:
内置命令符(用于对文件进行不同的操作功能)
sed匹配的范围
注:sed要实现grep的过滤效果,必须把要过滤的内容放在双斜杠中
sed想要修改文件内容,必须用参数-i
s内置符配合g,代表全局替换,中间的“/”可以替换成“#@/”等
示例:取出Linux的ip 地址(去头去尾法)
七、awk命令
awk有强大的文本格式化的能力。支持条件判断、数组、循环等功能。
grep:擅长单纯的查找或匹配文本内容
awk:更适合编辑、处理匹配到的文本内容
sed :更适合格式化文本内容,对文本进行复杂处理
awk 语法:awk [option] ‘pattern[action]‘ file ...
awk 参数 ‘条件动作’ 文件
action指的是动作,awk擅长文本格式化,且输出格式化后的结果,因此最常用的动作是print和printf
awk 默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符。awk按行处理文件,一行处理完毕,处理下一行,根据用户指定的分隔符工作,没有默认空格。
指定了分隔符后,awk把每一行切割后的数据对应到内置变量中。
$0:表示整行
$NF:表示当前分割后的最后一列
$(NF-1):表示倒数第二列
awk内置变量
awk可以自动定义输出内容。awk 必须外层单引号,内层双引号。内置变量都不得添加双引号,否则会被识别为文本。
awk参数
awk实践