5 - Shell编程之正则表达式与文本处理工具

目录

一、正则表达式

1.概述

2.基本正则表达式

2.1 元字符(字符匹配)

2.2 表示匹配次数

2.3 位置锚定

3.扩展正则表达式

二、文本处理器

1. sort 命令 - 对文本文件进行排序,默认以字母排序

2. uniq 命令 - 找出或删除文本文件中连续出现的重复行

3. tr 命令 - 用于字符转换

4. cut 命令 - 对字段进行截取和剪裁


一、正则表达式

1.概述

由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表表控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

2.基本正则表达式

2.1 元字符(字符匹配)

匹配符 解释
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符,如[ac] [0-9] [a-zA-Z]
[^] 匹配指定范围外的任意单个字符,如[^ac]
\w 匹配单词构成部分
\W 匹配非单词构成部分
\s 匹配任何空白字符,包括空格、制表符、换页符等
\S 匹配任何非空白字符

2.2 表示匹配次数
 

匹配符 解释
* 匹配前面的字符任意次,包括0次
.* 匹配任意长度的字符,不包括0次
\? 匹配前面的字符出现0次或1次
\+ 匹配前面的字符出现最少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次

2.3 位置锚定

匹配符

解释

^ 行首锚定
$ 行尾锚定
^word$ 匹配内容只有"word"的行
^$ 匹配空行
^[[:space:]]*$ 匹配空白行
\< 词首锚定
\b
\> 词尾锚定
\b
\ 匹配"word"整个单词
\bword\b

3.扩展正则表达式

匹配符 解释
* 匹配前面的字符0次或者多次
.* 任意长度的任意字符
? 匹配前面的字符0次或1次
+ 匹配前面的字符至少1次
{n,m} 匹配前面的字符n到m次
{m} 匹配前面的字符m次
{n,} 匹配前面的字符至少n次
{,n} 匹配前面的字符至多n次
| 逻辑或
() 分组:将多个字符捆绑在一起,当作一个整体处理

二、文本处理器

1. sort 命令 - 对文本文件进行排序,默认以字母排序

sort "选项" "目标"

常用选项 解释
-b 忽略行首空白字符
-r 倒序排序
-f 忽略大小写排序
-n 数值大小排序
-u 去除重复行
-t 指定分隔符
-k 指定排序字段
-o 将排序后的结果输出到指定文件

2. uniq 命令 - 找出或删除文本文件中连续出现的重复行

uniq "选项" "输入文件" "输出文件"

  • #如果不指定输入文件,则会从标准输入获取数
  • #如果不指定输出文件,则结果会打印到标准输出
常用选项 解释
-c 显示每行出现的次数并压缩重复行
-u 只输出不重复的行
-d 只输出重复的行

3. tr 命令 - 用于字符转换

tr "选项" "字符集1" "字符集2"

常用选项 解释
-c 除了指定字符外的所有字符都被替换
-d 删除指定的字符
-s 压缩重复的字符为单个字符

4. cut 命令 - 对字段进行截取和剪裁

cat "选项" "参数"

常用选项 解释
-d 指定分隔符
-f 按字段进行截取
-b 按字节进行截取
-c 按字符进行截取
-complement 排除所指定的字段
-output-delimiter 更改输出内容的分隔符
[root@wzx demo]# cat ip.txt
192.168.110.111
20.11.66.98
333.333.333.333
666.6666.6666.6666
[root@wzx demo]# cut -d'.' -f2 ip.txt
168
11
333
6666

你可能感兴趣的:(Shell脚本,正则表达式,linux,服务器,运维)