2013-05-26 99 views
3

我們有一個小問題將不勝感激任何幫助。打印當前路徑的一部分

我們有以下路徑:

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

我們也有:

/root/dir1/dir2 

我們想這樣做/root/dir1/dir2/dir3/file.sav - /root/dir1/dir2並獲得唯一dir3/file.sav

我們嘗試使用tr -d但沒有成功。

+0

什麼是你想在一般做什麼?你是想剝離路徑中的前N個目錄,還是將最後一個目錄放在名稱前面,然後去除根目錄之前的許多目錄? – lurker

回答

5

不需要外部工具。 Bash可以自己解決這個問題。使用${variable#substring}可以打印一個子字符串從頭開始刪除的變量。例如:

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

工作很棒! :] *拍手鼓掌* –

0

只是提供其他候補......

bash

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

sed

​​

awk

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

replace

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