2011-04-14 58 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