bash - 获取文件名的一部分

标签 bash variables parameter-expansion

我尝试仅使用一个 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

最佳答案

获取号码

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

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

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

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

但是如果你想指定该字符串的后缀和前缀,你有以下选择:

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

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

关于bash - 获取文件名的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480811/

相关文章:

linux - 如何列出$PATH?

bash 参数扩展和组合模式匹配运算符

bash - 如何替换任意数量的命令行参数中的每个分隔符,这些参数都是分隔的名称-值对?

bash - 如何使用带参数的字符串来调用脚本,就像 bash 在解释命令行时所做的那样?

linux - Bash循环遍历包括隐藏文件的目录

linux - Bash 命令替换为参数

php - 整数百分比 PHP

bash - 通过键盘输入暂停脚本

Bash 忽略错误并获取返回码

javascript - Grunt 模板变量和 if else