4

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

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:~$

我尝试只使用%and/运算符。它如何更改最后一个命令以仅作为输出23

4

1 回答 1

3

获取号码

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

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

或者

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

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

但是,如果要指定该字符串的后缀和前缀,则可以使用以下替代方法:

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

因为echo ${f/num%.txt}不能正常工作并且 Bash 不允许你运行这样的东西echo ${${f/num}%.txt}

于 2015-12-27T13:33:14.787 回答