当前位置: 首页 > article >正文

深入理解Linux =~

一、基本用法

在Linux中,=~是用于正则表达式匹配的符号,其基本用法是:

[[ $variable =~ pattern ]]

其中$variable是待匹配的字符串,pattern是正则表达式。如果匹配成功,则返回0,否则返回1。

例如:

if [[ "hello world" =~ o.*o ]] 
then
    echo "Matched"
else
    echo "Not matched"
fi

该段代码将输出“Matched”,因为“hello world”中的“o”和“o”之间满足“o.*o”这个正则表达式。

通常在if语句中使用=~符号。

除了=~符号,Linux还有很多其他的正则表达式符号,如^表示匹配开头,$表示匹配结尾,*表示匹配0个或多个前面的字符,+表示匹配1个或多个前面的字符,?表示匹配0个或1个前面的字符,等等。

二、高级用法

Linux中,=~符号不仅可以用于匹配,还可以用于分组和替换。

1. 分组

在正则表达式中,可以使用()来表示一个分组。

例如:

if [[ "123abc" =~ ([0-9]+)([a-z]+) ]]
then
    echo "The number is ${BASH_REMATCH[1]}"
    echo "The letter is ${BASH_REMATCH[2]}"
else
    echo "Not matched"
fi

该段代码将输出“The number is 123”和“The letter is abc”,因为正则表达式“([0-9]+)([a-z]+)”将字符串“123abc”分成了两个部分:数字部分和字母部分,分别保存在了BASH_REMATCH数组的1和2位置上。

2. 替换

在正则表达式中,可以使用“${string//pattern/replacement}”来进行替换操作。

例如:

string="foo bar baz"
echo ${string//fo/Fo}

该段代码将输出“Foo bar baz”,因为将字符串中的“fo”都替换成了“Fo”。

三、注意事项

在使用=~符号时需要注意以下几点:

1. =~符号只能用于if语句或者case语句。

2. =~符号左右两边的空格不能省略。

3. =~符号右边的正则表达式必须用引号或者转义字符引起来。

4. =~符号左边必须是一个变量名。

四、总结

Linux中的=~符号是非常强大的正则表达式匹配工具,它支持匹配、分组和替换等操作。在使用时需要注意一些细节,但是掌握了它,可以帮助我们快速、方便地处理字符串。

转自  深入理解Linux =~_笔记大全_设计学院


http://www.kler.cn/a/154003.html

相关文章:

  • web——upload-labs——第十关——.空格.绕过
  • Windows docker下载minio出现“Using default tag: latestError response from daemon”
  • thinkphp6 入门(2)--视图、渲染html页面、赋值
  • web——upload-labs——第十二关——%00截断
  • gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突
  • H.265流媒体播放器EasyPlayer.js网页直播/点播播放器WebGL: CONTEXT_LOST_WEBGL错误引发的原因
  • Easy Excel设置表格样式
  • 【Element-ui】Icon 图标与Button 按钮
  • 【代码】基于改进差分进化算法的微电网调度研究matlab
  • 6.1810: Operating System Engineering <Lab2 syscall: System calls>
  • 【MySQL】视图 + 用户管理
  • 2023 如何下载最干净的 win10 win11 微软官方原版系统镜像(详细图文)
  • VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集
  • 新手村之SQL——增删改查条件查询
  • 2024年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷
  • 【halcon】C# halcon 内存暴增
  • SQL优化的面试题
  • c# 责任链模式
  • 1076 Forwards on Weibo (链接表层序遍历)
  • Linux常用命令汇总
  • 【python】python列表的用法记录
  • 第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化
  • 玄学调参实践篇 | 深度学习模型 + 预训练模型 + 大模型LLM
  • java学习part26线程安全
  • Maven终端打包时报Unknown lifecycle phase “.test.skip=true“
  • Java Servlet