获取文件名的一部分

4

我试图只使用一个bash变量来获取文件num23.txt的编号。

User@User-MacBook-Pro:~$ f=num23.txt
User@User-MacBook-Pro:~$ echo $f
num23.txt
User@User-MacBook-Pro:~$ echo ${f%.txt}
num23
User@User-MacBook-Pro:~$ echo ${f/num}
23.txt
User@User-MacBook-Pro:~$ echo ${f/num%.txt}
num23.txt
User@User-MacBook-Pro:~$

我尝试仅使用%/操作符。如何更改最后一个命令,以仅获取23作为输出?

1个回答

3

获取数字

对于您的特定示例(当您只有一个仅包含数字的子字符串时):

echo ${f//[^0-9]/} 

或者

echo ${f//[^[:digit:]]/}

获取前缀和后缀之间的字符串

但是,如果您想指定该字符串的后缀和前缀,则有以下替代方法:

echo `basename ${f/num} .txt`

由于echo ${f/num%.txt}不能正常工作,而Bash不允许您运行这样的命令echo ${${f/num}%.txt}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接