- 一.正则表达式定义
- 二.正则表达式元字符
- 2.1基础正则表达式元字符
- 2.2扩展正则表达式元字符
- 三.文本处理工具
- 3.1列截取工具--cut
- 3.2排序工具--sort
- 3.3去重工具--uniq
- 3.4修改工具--tr
- 3.5文本工具组合
- 四.总结
引言:
正则表达式,又称规则表达式。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本,正则表达式不只有一种,而且 Linux 中不同的程序可能会使用不同的正则表达式。 一.正则表达式定义
正则表达式,又称正规表达式、常规表达式,使用字符串来描述、匹配一些列符合某个规则的字符串
正则表达式是由普通字符与元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
Linux 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式: ERE
基础正则表达式常见元字符如下:
| 元字符 | 作用 |
|---|---|
| 转义字符,用于取消特殊符号的含义 | |
| ^ | 匹配字符串开始的位置 |
| $ | 匹配字符串结束的位置 |
| ^$ | 匹配空行 |
| . | 匹配除n之外的任何一个字符 |
| * | 匹配前面子表达式0次或多次 |
| [list] | 匹配list列表中的一个字符 |
| [^list] | 匹配任意非列表中的一个字符 |
| {n} | 匹配前面子表达式不少于n次 |
| {n,m} | 匹配前面子表达式n到m次 |
| 注:egrep、awk使用{}匹配时不用加转义 |
1.!,n,$等 2.^a以a开头; ^#以#开头 ;^[a-z]以字母a-z开头 3.word$ 以word结尾
4.go.d 匹配一个字符,good,goad,gozd ; go…d ;匹配两个字符,goabd,goefd
5.go*d 匹配0个o或者多个,比如:gd、god、good、goood
6.go.*d 匹配go+多个任意字符+d
7.go{2,4}匹配gd中间有2-4个o,grep使用{}要用转义符
扩展正则表达式元子符如下:
| 元字符 | 作用 |
|---|---|
| + | 匹配前面子表达式一次以上 |
| ? | 匹配前面子表达式0次或一次 |
| () | 将括号内的字符作为一个整体 |
| 丨 | 以或的方式怕匹配字符条串 |
1.go+d 匹配至少一个o,比如god、good、gooood等
2.go?d, 匹配0次或1次o,比如:gd 或god
3.g(oo)+d, 将括号内的看做一个整体,比如:good、goood、gooooood
4.g(00|gg)d,匹配good或者gggd
grep使用扩展正则表达式元字符时必须加转义符""
egrep使用扩展正则表达式元字符时则不用加转义符
显示行中的指定部分,删除文件中指定字段
格式:cut 选项 参数
常用选项:
| 选项 | 说明 |
|---|---|
| -b | 按字节截取 |
| -c | 按字符截取 |
| -d | 指定以什么分割符截取,默认为制表符 |
| -f | 通常和-d一起使用 |
cut只擅长于处理单个字符为间隔的文本,-b只能分割字母,-c既可以分割字母也可以分割中文
sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。
命令格式:sort [选项] 参数
常用选项:
| 选项 | 说明 |
|---|---|
| -t | 指定分隔符,默认使用Tab或空格分割 |
| -k | 指定排序区域 |
| -n | 按照数字进行排序,默认以文字排序 |
| -u | 等同于uniq,相同数据仅显示一行 ,若行尾有空格则不成功 |
| -r | 反向排序,默认是升序,-r反序 |
| -o | 将排序后的结果转存至指定文件 |
1.不加任何参数,默认以第一列的字符升序
2.按数字升序排序
3.反向排序,并显示前10行
uniq 命令用于检查及删除文本文件中连续重复出现的行列
命令格式:uniq [选项] 参数
| 选项 | 说明 |
|---|---|
| -c | 对重复的行进行统计 |
| -d | 仅显示重复行 |
| -u | 仅显示出现一次的行 |
1.uniq -c 只统计连续重复的行
2.uniq -d 与uniq -u
3.uniq一般与sort命令一起使用
tr可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
命令格式: tr [选项] 字符集1 字符集2
常用选项:
| 选项 | 说明 |
|---|---|
| -d | 删除字符 |
| -s | 删除所有重复出现的字符,只保留第一个 |
1.替换,当字符集1 与字符集2一一对应时
2.当字符集1 与字符集2不对应时
当字符没有一一对应时,字符集1剩余的字符,对应字符集2最后的一个字符
当字符集1中出现重复字符时,默认匹配后一个字符所对应的字符集2的字符
3.删除 -d
4.去重-s,只有连续出现的才去重
在实际使用中,我们经常将多个文本工具,组合使用达到我们的目的
1.查看登录用户和ip
2.查看登录过系统的用户
last 查看登录历史记录 cut -d " " -f1 以空格为分隔符截取第一列 sort -u 排序并过滤重复的 grep -v "^$|wtmp" 过滤空行和wtmp wtmp 位于/var/log/wtmp 用于存放登录历史记录的文件
3.查看登录ip和使用者个数
4.查看客户端和监听服务个数
1.用grep使用扩展正则表达式元字符的时候,必须加转义符“”
2.用egrep使用正则表达式元字符时,不需要加转义符“、”
3.tr命令:当字符没有一一对应时,字符集1剩余的字符,对应字符集2最后的一个字符
当字符集1中出现重复字符时,默认匹配后一个字符所对应的字符集2的字符



