2017-08-14 65 views
0

我想刪除字符串的第一部分,這裏是代碼,替換最後部分的作品,但不是第一部分,任何幫助?謝謝。如何刪除B中字符串的第一部分

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 
+1

嘗試'no_path = $ {no_ext#$ {dir}}' – ymonad

回答

0

同與%(刪除後綴),您可以使用#從而消除前綴:

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

可以說,你可以在這裏使用一個模式,因爲在我看來,就像你剝離了一個文件名的路徑:

no_path="${file_name##*/}" 

#使得比賽貪婪,所以它消除一切到最後的斜線。這是我一直在我的bash腳本中使用的東西'Usage函數:echo "${o##*/} [-h] does something

0

我想,你正試圖得到文件名,文件名沒有擴展名和擴展名。

更好的用戶basename命令來做到這一點。

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

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

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

此外,如果你想獲得目錄名不帶文件 使用目錄名

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