如果我有以下变量:
baseFolder="/a/b/c/"
completeFilePath="a/b/c/x/y/z.txt"
如何从completeFilePath
中提取子字符串并将输出作为:
x/y/z.txt
baseFolder
目录深度可能更多或更少
答案 0 :(得分:1)
尝试使用awk
$ baseFolder="/a/b/c/"
$ completeFilePath="a/b/c/x/y/z.txt"
$ echo $completeFilePath| awk -v a=$baseFolder '{len=length(a)}{print substr($0,len)}'
x/y/z.txt
简要说明:
len=length(a)
:获取$baseFolder
substr($0,len)
:从位置$completeFilePath
打印len
的子字符串答案 1 :(得分:0)
您可以使用bash参数扩展:
baseFolder="/a/b/c/"
completeFilePath="/a/b/c/x/y/z.txt"
echo "${completeFilePath#$baseFilePath}"
答案 2 :(得分:0)
这是使用bash参数扩展的一种简单方法:
b="a/b/c/d/"
p="a/b/c/d/x/y/z.txt"
echo "${p/${b}/}"
替换将基本文件夹作为模式,并将其替换为空(删除)。