shell脚本之正则表达式

一.常见的管道命令

1.1sort命令

  • sort命令可针对文本文件的内容,以行为单位来排序

    格式:sort  【选项】 参数
    
  • 常用选项

选项说明
-f忽略大小写
-b忽略每行前面的空格
-n按照数字进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用【Tab】键分隔
-k指定排序字段
-o<输出文件>将排序后的结果转存至指定文件

1.2uniq命令

  • uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用

    格式:uniq【选项】 参数
    
  • 常用选项

选项说明
-c进行计数,并删除文件中重复出现的行
-d仅显示连续的重复行
-u仅显示出现一次的行

1.3tr命令

  • 常用来对来自标准输入的字符进行替换,压缩和删除

    格式;tr 【选项】 【参数】
    
  • 常用选项

选项说明
-c保留字符集1的字符,其他的字符用字符集2替换
-d删除所有属于字符集1的字符
-s将重复出现的字符串压缩为一个字符串;用字符集2替换字符集1
-t字符集2替换字符集1,不加选项同结果
  • 常用参数
参数说明
字符集1指定要转换或删除的原字符集,当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2‘
字符集2指定要转换成的目标字符集

1.4cut命令

  • 显示行中指定的部分,删除文件中指定字段

     格式;cut 【选项】 参数
    

-常用选项

选项说明
-f通过指定哪一个字段进行提取。cut命令使用“TAB” 作为默认的字段分割符
-d“TAB”是默认的分割符,使用此选项可更改为其他的分隔符
–complement用于排除所指定的字段
–output-delimiter更改输出内容的分隔符

1.5实例

1.5.1统计当前主机连接状态

在这里插入图片描述

1.5.2统计当前主机数

在这里插入图片描述

二.正则表达式

2.1正则表达式的定义

  • 正则表达式,又称正规表达式,常规表达式
  • 使用字符串来描述,匹配一系列符合某个规则的字符
  • 正则表达式组成
    • 普通字符,包括大小写字母,数字,标点符号及一些其他符号
    • 元字符是指在正则表达式中具有特殊意义的专用字符

2.2常见元字符(支持的工具:find,grep,egrep,sed和awk)

匹配符表示含义
.表示任意一个字符
【】匹配括号中的一个字符
【^】表示否定括号中出现字符类中的字符,取反
\转义字符用于取消特殊符号的含义
^匹配字符串开始的位置
$匹配字符串结束的位置
{n}匹配前面的字表达式n次
{n,}匹配前面的子表达式不少于n次
{n,m}匹配前面的子表达式n到m次
【:alnum:】匹配任意字母和数字
【:alphabet:】匹配任意字母,大写或小写
【:lower:】小写字符a-z
【:upper:】大写字符A-Z
【:blank:】空格和TAB字符
【:space:】所有空白字符(新行,空格,制表符)
【:digital:】数字0-9
【:xdigt:】16进制数字
【:cntrl:】控制字符

实例1:.表示任意一个字符

在这里插入图片描述

示例2:【】匹配括号中的一个字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例3;【^】:表示否定括号中出现字符类中的字符,取反
在这里插入图片描述
在这里插入图片描述
示例4:【:alnum:】匹配任意字母和数字

在这里插入图片描述
示例5:元字符;(.)
在这里插入图片描述
在这里插入图片描述

2.3扩展正则表达式

  • 支持的工具;egrep,awk或grep -E和sed -r
限定符说明
*匹配前面子表达式0次或者多次
.*任意长度的任意符
匹配前面子表达式0次或者1次,即:可有可无
+与星号相似,表示其前面字符出现一次或多次,但必须出现一次,>=1
{n,m}匹配前面的子表达式n到m次
{m}匹配前面的子表达式n次
{n,}匹配前面的子表达式不少于n次>=n
{,n}匹配前面的子表达式最多n次,<=n
l用逻辑OR方式指定正则表达式要用的模式
()字符串分组,将括号中的字符串作为一个整体

实例1:*匹配前面子表达式0次或者多次
在这里插入图片描述
示例2;{n,m}匹配前面的子表达式n到m次
在这里插入图片描述
实例3:{n,}匹配前面的子表达式不少于n次>=n
在这里插入图片描述
实例4;{,n}匹配前面的子表达式最多n次,<=n
在这里插入图片描述
实例5:*匹配前面子表达式0次或者多次
在这里插入图片描述
实例6:*任意长度的任意字符
在这里插入图片描述
实例7:?匹配前面子表达式0次或者1次,即:可有可无
在这里插入图片描述
实例8:+与星号相似,表示其前面字符出现字符一次或多次,但必须出现一次,>=1
在这里插入图片描述
实例9:|逻辑OR方式指定正则表达式要用的模式
在这里插入图片描述
实例10:()字符串分组,将括号中的字符串作为一个整体
在这里插入图片描述
实例11:提取ip地址
在这里插入图片描述
在这里插入图片描述

2.4位置锚定

位置限定符说明
^行首锚定,用于模式的最左侧
$行尾锚定,用于模式最右侧
^ OATTERN^用于模式匹配整行
^$空行
^ [[:space;]]*$空白行
<或\b词首锚定,用于单词模式的左侧
>或\b词尾锚定,用于单词的右侧
<PATTERN>匹配整个单词

实例1;行尾锚定,用于模式的最右侧

在这里插入图片描述
实例2;行尾锚定,用于模式的最左侧
在这里插入图片描述
实例3:用于模式匹配整行,匹配的内容单独在一行
在这里插入图片描述
实例4;<:只匹配右侧单词
在这里插入图片描述
实例5:>;只匹配左侧的单词
在这里插入图片描述
实例6:过滤出不是以#开头的非空行

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达米安利拉德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值