如何删除B中字符串的第一部分

时间:2017-08-14 08:23:27

标签: bash

我想删除字符串的第一部分,这里是代码,替换最后一部分工作,但不是第一部分,任何帮助?感谢。

dir="/info/"
file_name="/info/test.db"

no_ext=${file_name%.db}
no_path=${no_ext%${dir}}

echo $file_name
echo $no_ext
echo $no_path

2 个答案:

答案 0 :(得分:0)

我想,你是想获取没有扩展名和扩展名的文件名,文件名。

更好的用户basename命令来执行此操作。

$ basename /Users/text/help1.txt
help1.txt

$ basename help1.txt| cut -d'.' -f2  
txt

$ basename help1.txt | cut -d'.' -f1
help1

此外,如果您想获取没有文件名的目录名称 使用dirname

$ dirname /Users/text/help1.txt
/Users/text

答案 1 :(得分:0)

package require fileutil ::fileutil::updateInPlace datafile process (删除后缀)相同,您可以使用%删除前缀:

#

可以说,你可以在这里使用一个模式,因为在我看来,你似乎正在剥离文件名的路径:

no_path="${file_name#${dir}}"

Double no_path="${file_name##*/}" 使得匹配变得贪婪,因此它删除了最后一个斜杠的所有内容。这是我在bash脚本中一直使用的东西' #个函数:Usage