Bash 获取某些符号之间的子字符串

Bash 获取某些符号之间的子字符串,bash,shell,terminal,Bash,Shell,Terminal,如何获取存储在某些符号之间的字符串 所以我有这样的字符串,比如/some/path/to/project/HelloWorld.xcodeproj。我想在变量中得到结果,即HelloWorld。是否可以使用shell?例如: 文件名: $ filename=$(basename /some/path/to/project/HelloWorld.xcodeproj) $ echo $filename HelloWorld.xcodeproj 无扩展: $ echo ${filename%.*}

如何获取存储在某些符号之间的字符串


所以我有这样的字符串,比如
/some/path/to/project/HelloWorld.xcodeproj
。我想在变量中得到结果,即
HelloWorld
。是否可以使用shell?

例如:

文件名:

$ filename=$(basename /some/path/to/project/HelloWorld.xcodeproj)
$ echo $filename
HelloWorld.xcodeproj
无扩展:

$ echo ${filename%.*}
HelloWorld
$ basename "$(basename "$NAME")" .xcodeproj

例如:

文件名:

$ filename=$(basename /some/path/to/project/HelloWorld.xcodeproj)
$ echo $filename
HelloWorld.xcodeproj
无扩展:

$ echo ${filename%.*}
HelloWorld
$ basename "$(basename "$NAME")" .xcodeproj
是的,有可能:

$ NAME=/some/path/to/project/HelloWorld.xcodeproj
$ basename $NAME | cut -d. -f1       
HelloWorld
或者如果您总是知道分机:

$ echo ${filename%.*}
HelloWorld
$ basename "$(basename "$NAME")" .xcodeproj
更通用的解决方案(还考虑了@fedorqui的案例):

还有另一个解决方案(使用更多管道但不使用正则表达式):

是的,有可能:

$ NAME=/some/path/to/project/HelloWorld.xcodeproj
$ basename $NAME | cut -d. -f1       
HelloWorld
或者如果您总是知道分机:

$ echo ${filename%.*}
HelloWorld
$ basename "$(basename "$NAME")" .xcodeproj
更通用的解决方案(还考虑了@fedorqui的案例):

还有另一个解决方案(使用更多管道但不使用正则表达式):


Mmm如果文件是
myfile.test.txt
,该怎么办?它只会返回
myfile
。我知道这不是示例输入,但可能会发生。嗯,如果文件是
myfile.test.txt
,该怎么办?它只会返回
myfile
。我知道这不是示例输入,但可能发生。