自学内容网 自学内容网

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. 常见应用操作

  1. 统计当前主机的连接状态。

    ss -antp | grep -v "^State" | cut -d ' ' -f 1 | sort | uniq -c
    
  2. 统计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)!