目录
一、正则表达式
1.1 正则表达式的定义
正则表达式,在代码中通常简写为regex、regexp。正则表达式通常被用来检索或者替换某个模式的文本,在linux中不同的程序可能会去使用到不同的正则表达式,如:grep sed awk
1.2 正则表达式的分类
Linux中常用的有两种正则表达式:
①基础正则表达式:BRE
②扩展正则表达式:ERE
1.2.1 基础正则表达式的元字符
元字符 | 功能 |
\ | 转义字符,把特殊字符转化为普通字符 |
^ | 匹配字符串开始的位置 |
$ | 匹配字符串结束的位置 |
. | 匹配一个任意的字符 |
* | 匹配一个或多个任意字符 |
【】 | 匹配【】内的字符, re【a|q】 |
【^】 | 匹配【】里以什么为开头的字符,【^a-z】 |
\{n\} | 匹配前面的字符n次 |
\{n,\} | 匹配前面的字不少于n次 |
\{n,m\} | 匹配前面文字n到m次 |
①grep命令使用正则表达式来搜索文本
格式:grep 【选项】 【条件】 查找的文件
常用选项:
-E: 解释PATTERN作为扩展正则表达式,也就相当于使用egrep。 或操作
-i : 搜索时候忽略大小写
-v: 反转匹配,选择没有被匹配到的内容。
-w:匹配整词,精确地单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)
-n : 显示行数
-c:打印匹配文本行次数
例如:
不显示含有root的行(-v)
显示以root开头的行
显示以bash结尾的行
grep ‘ o\{1,\}’
显示行号和不区分大小写
‘sh【oi】rt’ 显示出sh后带有i或者o的
【^w】oo 显示oo前面不是以w为开头的
查找含有数字的行数及内容
查找以字母开头的行号和内容
..和*的区别
1.2.2 扩展正则表达式
扩展正则表达式,需要使用到egrep或者awk的命令。
常用的扩展元字符:
元字符 | 功能 |
+ | 匹配前面一次以上; go+d,匹配至少一个o |
? | 匹配前面一次或零次; go?d/将会匹配到gd或god |
| | 表示或者的意思 good | read 匹配到good或者read r(ea| oo)d 将会匹配到 read或者rood |
() | 在括号内的字符当作一个整体 (wes)就把wes作为一个整体 |
()+ | 匹配括号内整体一次或者多次以上 (food)+ 就会匹配出一个food或者多个food |
例如:
匹配一个或多个
过滤掉空行或者以#开头的内容
二、拓展小工具
2.1 cut 命令
cut 截取工具
常用选项:
-b 按字节截取
-c 按字符截取(中文)
-d 指定以什么作为分隔符
-f 截取出以什么分区的第几个区域,通常与-f一起用
例如:截取以:为分区的第七个分区
截取出以:为分割的第1列和第7列
2.2 sort 命令
sort 将一个文件内容进行排序
常用选项
-t 以什么为分隔符
-k 指定分割后的排序区域
-n 按照数字进行排序(默认为文字)
-r 反向排序(倒序)
-o 将排序后的内容指定发送到某个文件里
-f 忽略大小写
-b 忽略每行前的空格
例:
把passwd的文件按照字母顺序进行排序
以:为分割符,按照数字大小去排序第三区
以:为分割符第四区域按数字排序并输入到一个文件中
2.3 uniq 命令
uniq 主要用于去除重复行
常用选项
-c 对重复的行数进行计数
-d 仅显示重复行
-u 仅显示出现一次的行
例:
对重复行计数
显示重复的行
显示出现一次的行
查看登录过系统的用户
2.4 tr 命令
tr 可以用一个字符去替换另一个字符,常用对于字符进行替换、压缩和删除
常用选项:
-d 删除字符
-s 删除所有的字符只保留一个字符
例:
把ni替换成wo
把文件所有小写调成大写
把n字符删除
只保留一个n
总结
1. 正则表达式分为:基础正则表达式和扩展正则表达式
2.cut(截取)、uniq(去重)、tr(替换)、sort(排序)的小工具