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\>匹配"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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值