shell 正则表达式

本文详细介绍了正则表达式的基本概念和使用方法,通过实例解析了如何进行字符串匹配、查找和替换。同时,对比了正则表达式与通配符的区别,并展示了在Linux命令行中使用正则表达式的例子。内容涵盖正则的基础符号,如星号、问号、点号、中括号等,以及行首行尾匹配和字符集的运用。
摘要由CSDN通过智能技术生成

正则表达式

正则表达式在程序语言中很常见,本文也有利于其他语言中正则表达式的学习,用浅显易懂的例子帮助大家学习正则表达式

什么是正则表达式

正则表达式是用于描述字符排列和匹配模式的一种语法则它主要用于字符串的模式分割、匹配、查找及替换操作。

正则表达式与通配符

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed 等命令可以支持正则表达式。

通配符用来匹配符合条件的文件名,通配符是完全匹配。Is、find、cp 这些命令不支持正则表达式,所以只能使用 shell 己的通配符来进行匹配了。

通配符

  • * 匹配任意内容
  • ? 匹配任意一个内容
  • [] 匹配中括号中的一个字符
touch cangls
touch canyls
ls
cangls
canyls
run
script.sh
ls can?ls
cangls
canyls
ls can???
cangls
canyls
ls can*
cangls
canyls
ls can[gy]ls
cangls
canyls

基础正则表达式

在这里插入图片描述

?() 是扩展正则

“*”前一个字符匹配 0 次,或任意多次

  • a* 匹配所有内容包括空白行
  • aa* 匹配至少包含有ー个 a 的行
  • aaa* 匹配最少包含兩个连续 a 的字符串
  • aaaaa* 则会匹配最少包含四个个连续 a 的字符串

在这里插入图片描述
. 匹配除了换行符外任意一个字符

  • s..d 会匹在 s 和 d 这两个字母之定有两个字符的单词
  • s.*d 匹配在 s 和 d 字母之向有任意字符
  • .* 匹配所有内容

^ 匹配行首,$ 匹配行尾

  • ^M 匹配以大写“M”开头的行
  • n$ 匹配以小写“n”结尾的行
  • ^$ 会匹配空白行
grep "b$" test.txt
ab  
aabb 
b  
bb  
bbb  
bbbb  
bbbbb

[] 匹配中括号中指定的任意一个字符,只匹配一个字符

  • s[ao]id 匹配 s 和 i 字母中,要不是 a、要不是 o
  • [0-9] 匹配任意一个数字
  • ^[a-z] 匹配小写字母开头的行

[^] 匹配除中括号的字符以外的任意一个字符

  • ^{^a-z} 匹配不用小写字母开头的行
  • ^[^a-zA-Z] 匹配不用字母开头的行

正则表达式案例

字符截取命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值