shell编程 正则表达式 文本处理器

正则表达式

定义:

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

通配符

通配符只用于匹配文件名、目录名等,不能用于匹配文件内容。通配符主要是为了方便用户对文件或者目录的描述

通配符的选项

“*”:匹配任意一个或多个字符

 “?” :匹配任意一个字符,只能匹配单个不能匹配多个的

"[ ]" : 匹配范围内的任意字符 [ 0-9]、[a-z]

正则表达式的形式

1、基本正则表达式

2、扩展正则表达式

区别: 仅限写法上的区别,其他没有任何不同

基本正则表达式

字符匹配:元字符

相关符号:

1、" . "(点):匹配任意单字符

例如  : ls |grep "123\."

 当“ . ”变成点,需要加“ \ ” 

"\" :表示转义符,、\.就是一个点

2、():表示分组的意思,加"\"  例如“\(\)”就是表示括号本意

3、“ [ ] ” : 匹配指定范围内的任意单个字符

例如:[0-9]、[a-z]、[A-Z]

 通配符 ls [0-9].txt

正则表达式:

 " "引号引起来,否则会出现歧义

4、" [^] " : 取反,指定范围之外的

 5、“[[ : space: ]]” :匹配空格,包括tab键也算、回车键出来的空格、换行出来的空格

 6、[[:blank:]]空白字符(空格和tab键,)制表符

通配符和正则表达式

通配符不能完全表示和匹配大写和小写,正则表达式可以,所以一定要用正则表达式来匹配大小写

正则表达式:表达次数的表达式

1、“ * ”:表示匹配前面的字符任意次,0次也行,无数次也行有多少匹配多少,没有也行,贪婪模式

echo google |grep "go*gle"

2、“.* ” : 任意长度的任意字符,不包括0次,也就是匹配所有,至少要有1次

3、“\?” :匹配其前面的字符出现0次或1次,即:可有可无

4、“\+”:匹配其前面的字符出现最少1次,即:肯定有且 >=1 次

5、“\{n\}” : 匹配前面的字符等于n次,精确匹配

  n: 表示前面的字符出现的次数,正好等于才可以匹配,

\{m,n\}: 匹配前面的的字符最少M次,最多n次

\{,n\}: 匹配前面的字符,最多n次

\{n,\}匹配前面的字符最少n次,最多无穷

 位置锚定

选项

^ :行首锚定, 用于模式的最左侧

例如:^ root : 以root为开头

$ :行尾锚定,用于模式的最右侧

sh^ : 以sh为结尾

^$ :空行,匹配空行,只有空行才能匹配,空格无法匹配

^[[:space:]]*$ :空白行

词首锚定和词尾锚定

词首锚定:  \<或\b    词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)

词尾锚定:  \>或\b    词尾锚定,用于单词模式的右侧

与单词的位置有关,“\b”在左,从左往右,以什么为开头

匹配整个单词: \<root\>或\broot\b

分组:

1、“()”表示

echo abccc |grep “abc\{3\}”

匹配ab   c3次 连续出现的3次

补充:

完整匹配:

\{n\}:表示正好出现几次,n次前面的字符,必须连续出现,才能匹配

\{,n\} : 表示你只要出现,n次都算,除非没有

2、“ \ |”

表示逻辑或,

echo 1abc | grep "1\|2"

 扩展正则表达式

命令:

(把前面的“\”全部取消就是正则表达式)

但是必须是:grep -E 或egrep

*   匹配前面字符任意次
?   0或1次
+   1次或多次
{n} 匹配n次
{m,n} 至少m,至多n次
{,n}  #匹配前面的字符至多n次,<=n,n可以为0
{n,}  #匹配前面的字符至少n次,<=n,n可以为0
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值