C04S06-Shell编程之正则表达式
一、正则表达式
1. 正则表达式概述
正则表达式是用于匹配文本内容,而通配符是匹配文件名称。使用正则表达式的时候,避免出现歧义,最好将表达式写在引号当中。
2. grep命令 – 文本搜索工具
grep命令来自英文词组global search regular expression and print out the line的缩写,意思是用于全面搜索的正则表达式,并将结果输出。通常会将grep命令与正则表达式搭配使用,实现文本字符的搜索。
grep [选项] [表达式] 文件
常见的选项:
选项 | 功能 |
---|---|
-A | 显示匹配行,并显示后面的NUM行 |
-B | 显示匹配行,并显示前面的NUM行 |
-c | 只显示匹配的行数 |
-C | 显示匹配行,并显示前后的NUM行 |
-E | 支持扩展正则表达式 |
-f | 根据模式文件匹配文本内容,可用于匹配两个文件的相同内容 |
-i | 忽略匹配词大小写 |
-m | 最大匹配次数 |
-n | 显示匹配行及行号 |
-o | 只显示匹配部分 |
-r | 递归匹配搜索 |
-R | 递归匹配,包括链接文件 |
-v | 显示非匹配行 |
-w | 精准匹配词 |
-x | 精准匹配行 |
常见的正则表达式:
表达式 | 功能 |
---|---|
. | 匹配除换行符外的任意单个字符 |
^ | 从开端开始匹配 比如:^江,匹配“江”开头的单词 |
$ | 从末端开始匹配 比如:苏$,匹配“苏”结尾的单词 |
^$ | 匹配空行 |
3. sort命令 – 对文件内容进行排序
sort命令的功能是对文件内容进行排序,默认是数组在前,字母在后;小写在前,大写在后。
sort [选项] 文件
常见的选项:
选项 | 功能 |
---|---|
-b | 忽略每行的空格字符 |
-f | 忽略字母大小写 |
-n | 根据数值大小进行排序 |
-o | 将排序结果写入指定文件 |
-u | 去除排序,重复的内容只显示一行 |
4. uniq命令 – 去除文件中的重复内容行
uniq命令来自英文单词unique的缩写,功能是去除文件中的重复内容行。通常和sort命令结合使用,
uniq 选项 文件
常见的选项:
选项 | 功能 |
---|---|
-c | 统计每行的重复次数,并作为该行的前缀显示,连续重复的行会合并显示 |
-d | 显示连续重复的行,只显示一次 |
-u | 显示不连续重复的行 |
5. tr命令 – 字符转换工具
tr命令来自英文单词transform的缩写,功能是转换字符,包括替换、删除、压缩等,默认是替换操作。但是只能够从标准输入中读取文本内容,需要与管道符或输入重定向操作符搭配使用。
tr命令通常需要两组字符,第一组字符是会被替换的字符,第二组字符是被替换成的字符。工作原理是:第一组的第一个字符将被第二组的第一个字符替换,第一组中第二个字符会被第二组中的第二个字符替换,依此类推。因此两个字符的长度最好保持一致。如果两个字符长度不一致,那么可以使用-t选项进行长度截断。
tr [选项] 字符1 字符2
常见的选项:
选项 | 功能 |
---|---|
-c | 取反替换,将不在字符1中的字符替换成字符2 |
-d | 删除字符1中出现的字符 |
-s | 连续重复出现的字符仅显示一次 |
-t | 将字符1截断至字符2的长度 |
6. cut命令 – 按列提取文件内容
cut命令的功能是按列提取文件内容。
cut [选项] 文件
常见的选项:
选项 | 功能 |
---|---|
-b | 以字节为单位进行截取 |
-c | 以字符为单位进行截取 |
-d | 设置分隔符 |
-f | 显示指定的列 |
7. 常见应用操作
-
统计当前主机的连接状态。
ss -antp | grep -v "^State" | cut -d ' ' -f 1 | sort | uniq -c
-
统计Nginx服务访问日志当中出现的IP地址次数。
cat /var/log/nginx/access.log | cut -d ' ' -f 1 | sort | uniq -c
8. 常见正则表达式
正则表达式包括基本正则表达式和扩展正则表达式;基本正则表达式又叫做标准正则表达式,只支持最基本的元字符;扩展正则表达式支持更多的元字符。与基本正则表达式相比,扩展正则表达式不需要将一些表达式通过反斜杠进行转义。常见表达式如下所示:
表达式 | 功能 |
---|---|
^ | 匹配开端字符 |
$ | 匹配末端字符 |
. | 匹配除换行符外的任意字符 |
[] | 匹配指定范围内的任意单个字符,可以使用连字符表示范围 |
[^] | 匹配非指定范围内的任意单个字符 |
* | 匹配前面字符出现任意次 |
.* | 匹配任意长度字符 |
? | 匹配前面字符出现0次或1次 |
+ | 匹配前面字符最少出现1次 |
{n} | 匹配前面字符出现n次 |
{n,} | 匹配字符最少出现n次 |
{,n} | 匹配前面字符最多出现n次 |
{m,n} | 匹配前面字符最少出现m次,最多出现n次 |
\b | 匹配单词边界 |
() | 匹配分为一组的字符 |
| | 表示多个正则表达式之间“或”的关系 |
原文地址:https://blog.csdn.net/Lin_Nong/article/details/144062783
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!