文章目录
1.正则表达式
Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符
正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql 等主要用来匹配字符串(命令结果,文本内容),
通配符匹配文件(而且是已存在的文件)
- 基本正则表达式
- 扩展正则表达式
1.1 元字符
1.2 表示次数
1.表示匹配任意次数(无限大)
2. #任意长度的任意字符
3.? #匹配其前面的字符出现0次或1次,即:可有可无
4.+ #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
5.{n} #匹配前面的字符n次
6.{m,n} #匹配前面的字符至少m次,至多n次
7.{,n} #匹配前面的字符至多n次,<=n
8.{n,} #匹配前面的字符至少n次
1.3位置锚定
^ 行首锚定, 用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ #用于模式匹配整行 (单独一行 只有root)
^$ 空行
1*$ #空白行{首(无限个空格)尾}
< 或 \b #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)
> 或 \b 词尾锚定,用于单词模式的右侧
1.4 扩展正则表达式
1.4.1表示次数
1.* 匹配前面字符任意次
2.? 0或1次
3.+ 1次或多次
4.{n} 匹配n次
5.{m,n} 至少m,至多n次
6.{,n} #匹配前面的字符至多n次,<=n,n可以为0
7.{n,} #匹配前面的字符至少n次,<=n,n可以为0
1.4.2 表示分组
() 分组
分组:用括号将其中的内容划分成一个整体,类似a*(b+c),不加括号a就和b相乘,加了括号作为一个整体就和b+c相乘
用法:
| 或者
a|b #a或b
C|cat #C或cat
(C|c)at #Cat或cat
1.5搭配命令
1.5.1 sort(排序)
用法:sort 选项 参数
1.5.2 uniq(去重)
用法:uniq -c 字符 文件
将重复的字符压缩并统计出现次数
1.5.3 tr (替换)
用法:tr 选项 字符1 字符2
1.5.3 echo(输出)
echo -n 内容 表示不换行输出
echo -e 选项 内容 表示加入转义符
1.5.4 date(日期)
date:显示当前日期
date -d 参数:根据参数,显示对应日期
2.grep
用法:grep 选项 过滤内容 参数
常用的选项
-r 可以递归查找(不能查找软链接)
-R 可以递归查找(能查找软链接)
3.awk
基本用法:awk 选项 语法 文件(默认分隔符是空格)
常用选项
-F 设定分隔符(啥都能做分隔符)
-V 设定变量
3.1 awk 常见的内置变量
4. sed(流编辑器)
sed 选项 语法 文件
4.1选项:
-n 和 语法里面的p搭配使用
4.2语法:
4.3 查找替换
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写
总结:
awk sed grep的使用都是建立在熟练使用正则表达式上,正则用的好可以提取自己想要的任何东西。
[:space:] ↩︎