2011-04-14 25 views
0
Input: [[target|visible]] 
Output: visible 

這裏是我的嘗試:sed腳本維基百科將鏈接轉換

's:\[\[\[^\|]*|\(.*\)]]:\1:g' 

(unesacped和間隔的可讀性:

's: [[ [^\|]* | (.*) ]]:\1:g' 

但它不工作。

編輯:解決它:

's:\[\[[^]\|]*\|\([^]]*\)]]:\1:g' 

回答

0

你可以使用擴展正則表達式與sed -r

echo '[[target|visible]]' | sed -r 's:^\[\[[^\|]*\|(.*)\]\]$:\1:' 

我也沒搞清楚如何匹配|基本的正則表達式...

0

嘗試的awk,它更適合這份工作。拆分「|」然後獲得第二場。就那麼簡單。根據需要刪除那些]

$ echo "[[target|visible]]" | awk -F'|' '{gsub(/\]/,"",$2);print $2}' 
visible 

或任何可輕鬆分割字符串的工具。如紅寶石(1.9+)

$ echo "[[target|visible]]" | ruby -e 'puts gets.split("|")[-1].gsub(/\]/,"")' 
visible 
+0

'AWK '在運行的系統上不可用。 – Hurk 2011-04-14 10:41:21