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

时间:2013-11-25 15:05:37

标签: bash shell terminal

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

所以我有/some/path/to/project/HelloWorld.xcodeproj这样的字符串。我希望变量的结果为HelloWorld。是否可以使用shell?

2 个答案:

答案 0 :(得分:3)

有了这个,例如:

文件名:

$ filename=$(basename /some/path/to/project/HelloWorld.xcodeproj)
$ echo $filename
HelloWorld.xcodeproj

没有扩展名:

$ echo ${filename%.*}
HelloWorld

答案 1 :(得分:1)

是的,有可能:

$ NAME=/some/path/to/project/HelloWorld.xcodeproj
$ basename $NAME | cut -d. -f1       
HelloWorld

或者如果你总是知道扩展名:

$ basename "$(basename "$NAME")" .xcodeproj

更通用的解决方案(也考虑了来自@fedorqui的案例):

$ basename $NAME | sed 's|\.[[:alpha:]]\+$||'

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

$ basename myfile.test.txt | rev | cut -d. -f2- | rev
$ myfile.test