打印当前路径的一部分

3
我们遇到了一个小问题,希望得到帮助。
我们有以下路径:
/root/dir1/dir2/dir3/file.sav

我们还有:

 /root/dir1/dir2

我们希望做类似于/root/dir1/dir2/dir3/file.sav - /root/dir1/dir2,只获取dir3/file.sav

我们尝试使用tr -d但没有成功。

你通常想做什么?你想要剥离路径中的前N个目录,还是获取名称之前的最后一个目录并且去掉在那之前到根目录的所有目录? - lurker
2个回答

5

不需要外部工具。Bash可以自己解决这个问题。使用${variable#substring}从开头删除一个子字符串并打印变量。例如:

$ PATH1=/root/dir1/dir2/dir3/file.sav
$ PATH2=/root/dir1/dir2
$ echo ${PATH1#${PATH2}/}
dir3/file.sav

运行得很好!:] 鼓掌鼓掌鼓掌 - Nadav Peled

0

提供其他的替代方案...

bash:

echo ${PATH1/${PATH2}\//}

sed

sed "s#$PATH2/##" <<< $PATH1

awk:

awk -v var="$PATH2" '{sub(var"/","",$0)}1' <<< "$PATH1"

替换

replace "$PATH2/" "" <<< "$PATH1"

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