2016-04-22 38 views
2

這裏是我的Bash代碼:如何在`/`之後獲取這個字符串的部分?

echo "Some string/Another string" | grep -o "\/.*" 

這將返回/Another string

但我不希望/包含在由echo返回的值中。

如何更改正則表達式來完成此操作?

編輯:我想匹配/後面的所有內容,不管後面是什麼。 "Another string"並不總是在/之後。

回答

2

如果你有GNU grep的支持PCRE那麼你可以使用\K忘記了比賽。

$ echo "Some string/Another string" | grep -oP "\/\K.*" 
Another string 
+1

詳細說明'\ K'只是讓左手邊看起來很方便:'(?<\ /)。*' – andlrc

2

使用sed:

$ sed 's/.*\/\(.*\)/\1/' <<< "Some string/Another string" 
Another string 

它搜索任何characther高達下一/,然後捕獲和打印以下字符。

它可能在ERE模式更具有可讀性(-r選項與GNU SED)和另一個分離器:

sed -r 's|.*/(.*)|\1|' 
+0

對不起,我應該更具體。我想在'/'之後匹配所有內容,不管之後是什麼。 ''另一個字符串''並不總是在'/'後面 – Username

+0

更新了我的答案。 – SLePort

2

隨着參數擴展

$ string='Some string/Another string' 
$ echo "${string#*/}" 
Another string 

#擴展刪除什麼從擴展參數開始後說到。

隨着AWK

$ awk -F/ '{print $2}' <<< "$string" 
Another string 

這設置字段分隔符/並打印所述第二場。

2

爲此,您可以用命令:

如果你想的/

cut -d '/' -f 2 <<< "Some string/Another string/abc" 
output: Another string 

第一和第二齣現之間的字符串如果你想的/

cut -d '/' -f 2- <<< "Some string/Another string/abc" 
output: Another string/abc 
第一次出現後,整個字符串
相關問題