2012-02-28 48 views
2

我有一個非常簡單的問題,我無法快速解決。我必須從東西抽取子是這樣的:Bash字符串提取

a="www.himom.com/byebye" 

我想取出這個:

"/byebye" 

其實,我能夠檢索

「www.himom.com」 與

echo ${a%/*} 

有什麼建議嗎?

回答

3

試試這個: echo /${a##*/} 它刪除在 '/' 結束的最長子。

3

試試這個:

a="www.himom.com/byebye"; echo "/${a##*/}" 
+0

你會錯過他想要得到的'/'字符。 – 2012-02-28 16:10:04

+0

@izomorphius:怎麼樣? – 2012-02-28 16:22:47

+0

@izomorphius:也許海報編輯了答案,但我看到我的機器上工作。 – GreenMatt 2012-02-28 16:23:22

0

我是一個懶惰的傢伙。解決方法是:

${a##*/} 
+0

抱歉多次編輯/回滾。我試圖讓代碼正確顯示,但我所嘗試的沒有工作。 – GreenMatt 2012-02-28 16:27:11

-1

你可以用正則表達式中提取所需的子:

a="www.himom.com/byebye" 
echo `expr match "$a" '.*\(\/.*\)'` 
+0

爲什麼downvote? – GreenMatt 2012-02-28 16:24:06

0
$ a="www.himom.com/byebye" | echo ${a##*m} 
/byebye 
1

離開斜槓字符串中

shopt -s extglob 
echo "${a##*([^/])}"