以下是示例
SF_Library/example/Platform/Analyses-PLATFORM.part0.xml
SF_Library/example/Platform/Models-PLATFORM.part0.xml
SF_Library/example/Platform/Models-PLATFORM.car
SF_Library/example/Platform/DS-PLATFORM.car
我想抓住以下的基本路径。
SF_Library/example/Platform/
有人知道我应该使用什么正则表达式吗?
答案 0 :(得分:6)
您不需要正则表达式:
#!/bin/bash
fullpath="SF_Library/example/Platform/Analyses-PLATFORM.part0.xml"
# or if you read them then: while read fullpath; do
basename=${fullpath%/*}
# or if you read them then: done < input_file.txt
答案 1 :(得分:4)
正则表达式不用于提取子字符串。为什么不使用dirname
命令?
$ dirname /home/foo/whatever.txt
/home/foo
$
如果您需要变量:
DIRECTORY=`basename "SF_Library/example/Platform/DS-PLATFORM.car"`
答案 2 :(得分:2)
您可以使用 dirname 命令:
dirname SF_Library/example/Platform/DS-PLATFORM.car
它会给你:SF_Library/example/Platform
答案 3 :(得分:1)
好吧,我会放纵你。
^(.*/).*$
解剖:
^ beginning of string
( start of capture group
.* series of any number of any character
/ a slash
) end of capture group
.* series of any number of characters that are not slashes
$ end of string
这是有效的,因为*
是贪婪的:它匹配尽可能多的字符(因此它将包括直到最后一个的所有斜杠)。
但正如其他答案所指出的那样,正则表达式可能不是最好的方法。