打印当前路径的一部分

时间:2013-05-26 18:01:56

标签: bash tr

我们有一个小问题会感谢任何帮助。

我们有以下路径:

/root/dir1/dir2/dir3/file.sav

我们也有:

 /root/dir1/dir2

我们希望执行/root/dir1/dir2/dir3/file.sav - /root/dir1/dir2之类的操作,只获取dir3/file.sav

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

只提供其他替补......

bash

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

<强> sed

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

<强> awk

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

<强> replace

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