regex - 如何在bash中使用正则表达式查找字符串的特定部分
问题描述
我想在 bash 中使用正则表达式查找字符串的特定部分。此外,我想将该部分存储在另一个 bash 变量中。通过在网上搜索,我可以找到一种解决方案:
#!/bin/bash
string="aaa.ddd.config.uuu"
result=`expr match "$string" '\(.*\)\.config.*'`
echo $result
在上述情况下,我想找出之前的部分,"\.config"
并希望将其存储在另一个名为result
. 以上是一种好的有效方法吗?我想知道在这种情况下推荐的方法是什么。
解决方案
您可以使用bash
内置的正则表达式和BASH_REMATCH
捕获正则表达式匹配结果的数组变量:
$ string="aaa.ddd.config.uuu"
$ [[ $string =~ (.*)\.config ]] && result=${BASH_REMATCH[1]}
$ echo $result
aaa.ddd
推荐阅读
- c++ - 透明 MSAA FBO 解析期间的混叠伪影
- powershell - 如何拆分此哈希表搜索的结果?
- java - Maven 对 Nexus 中 jar 的依赖
- java - 如何使用链表进行选择排序
- python - 在manjaro linux(arch)中通过终端进行strat python时出现问题
- java - 如何在 JSON 而不是 MySQL 上加载数据?(转换代码)
- c# - 在 ASP.Net Core MVC 中的请求之间传递复杂对象的最佳方法
- javascript - 网站未正确获取 cookie 信息并重新加载垃圾邮件
- java - Spring MVC Hibernate 集成问题
- python-2.7 - 在重复标签中查找文本