Substring of string matching regex in a bash shell
本问题已经有最佳答案,请猛点这里访问。
在bash shell中,我想获取与regex匹配的给定字符串,然后获取该字符串的一部分。
例如,给定
我该怎么做呢?我应该在shell脚本中完成这一切,还是有其他方法来处理这一切?
您可以在
1 2 3 4 5 | #!/bin/bash url=https://github.com/PatrickConway/repo-name.git if [[ $url =~ ([^/]*)\.git ]] ; then echo"${BASH_REMATCH[1]}" fi |
括号中的每个部分都创建了一个捕获组,相应的匹配子字符串可以在bash_重匹配数组的相同位置找到。
[...] 定义字符类[/] 匹配由单个字符、斜线组成的字符类^ 否定字符类,[^/] 只匹配斜线* 表示"零次或多次"\. 匹配一个点,因为没有反斜杠的. 匹配任何字符
所以,它是这样写的:记住一个非斜杠的子字符串,后跟一个点和"git"。
或者简单的参数扩展:
1 2 3 4 5 | #!/bin/bash url=https://github.com/PatrickConway/repo-name.git url_without_extension=${url%.git} name=${url_without_extension##*/} echo $name |
这是一个
1 2 3 | var="https://github.com/PatrickConway/repo-name.git" basevar=${var##*/} echo ${basevar%.*} |
…给了EDOCX1[12]