Shell编程之正则表达式

目录

一、正则表达式

1、正则表达式概述

1.1 Linux 中常用的有两种正则表达式引擎

2. 基础正则表达式

3. 扩展正则表达式

3.1 定位符

3.2 非打印字符

二. grep命令

1. 格式

2. 常用选项

3. 示例

3.1 统计包含某个字符的文本行的行数

3.2 不区分大小写查找the所有的行

3.3 将非空行写入到文件中

3.4 过滤IP地址

三. 元字符操作案例

1. 查找特定字符

2. 查找特定集合字符

2.1 查找在s和i之间有b的特殊字符

2.2 查找不是R开头的oo的行

2.3 查找不是大写和小写字母开头的oo行

2.4 查找包含数字的行

2.5 查找除大小写字母开头的行

2.6 查找是 . 结尾的行

3. 查找以w开头,以d结尾的行

4. 查找连续字符范围 “{}”

4.1 查找2个o的字符

4.2 查找两个字母之间包含多个字符串的行

四. 常用的管道命令

1. cut 

2. sort

3.uniq

4. tr


一、正则表达式

1、正则表达式概述

  • 通常用于判断语句中,用来检查某一字符串是否满足某一格式
  • 正则表达式是由普通字符与元字符组成
  • 普通字符包括大小写字母、数字、标点符号及一些其他符号
  • 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符面的字符)在目标对象中的出现模式

1.1 Linux 中常用的有两种正则表达式引擎

  • 基础正则表达式:BRE
  • 扩展正则表达式:ERE
文本处理工具 基础正则表达式 扩展正则表达式

vi编辑器

支持

\

grep 支持

\

egrep 支持 支持
sed 支持 \
awk 支持 支持

2. 基础正则表达式

基础正则表达式是常用的正则表达式部分

元字符 作用
\ 转义字符,用于取消特殊符号的含义,如:\!,\n
^ 匹配字符串开始的位置,如:^world匹配以world开头的行
$ 匹配字符串结束的位置,如:world$匹配以world结尾的行
. 匹配除\n(换行)之外的任意的1个字符
* 匹配前面子表达式0次或者多次
[list] 匹配list列表中的一个字符,如:[0-9]匹配任意一位数字
[^list] 匹配任意不在list列表中的1个字符,如:[^0-9]匹配任意一位非数字字符

\ {n \ }

匹配前面的子表达式n次,如:[0-9]{2\ }匹配两位数字
\ {n,\ } 匹配前面的子表达式不少于n次,如:[0-9]\ {2,\ }表示两位及两位以上数字 
\ {n,m\ } 匹配前面的子表达式n到m次,如:[a-z]\ {2,3\ }匹配两到三位的小写字母

注意 egrep, awk使用{n}、{n,}、{n,m}匹配时“{}"前不用加“\”

   egrep -E -n 'wo{2}d' test.txt   -E用于显示文件中符合条件的字符
   egrep -E -n 'wo{2,3}d' test.txt

3. 扩展正则表达式

  • 扩展正则表达式是对基础正则表达式的扩充和深化

  • 支持的工具有 egerp 和 awk

  • 扩展正则表达式元字符

元字符 作用
+ 匹配前面子表达式1次以上,如: go+d,将匹配至少一个o
匹配前面子表达式0次或者1次,如:go?d,将匹配gd或god
() 将括号中的字符串作为一个整体,如:g(oo) +d,将匹配。整体1次以上,如good,gooood等
| 以或的方式匹配字条串,如:good I great,将匹配good或者great

3.1 定位符

  • ^ 匹配输入字符串开始的位置
  • $匹配输入字符串结尾的位置

3.2 非打印字符

  • \n匹配一个换行符
  • \r匹配一个回车符
  • \t匹配一个制表符

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell编程中的正则表达式是一种用于匹配和操作字符串的强大工具。它使用特定的语法规则来描述和匹配符合某个模式的字符串。在Shell编程中,常用的工具如grep、sed和awk都支持使用正则表达式进行模式匹配和文本处理。正则表达式由普通字符和特殊字符(元字符)组成。普通字符指的是任意字母、数字或其他字符,而元字符具有特殊的意义和功能,用于表示模式中的特定字符或符号。通过使用正则表达式,可以实现字符串的匹配、替换、提取等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Shell编程正则表达式](https://blog.csdn.net/weixin_51099370/article/details/124568808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Linux操作系统——Shell编程 正则表达式](https://blog.csdn.net/weixin_46411355/article/details/125628828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值