用于转换维基百科链接的sed脚本

时间:2011-04-14 10:26:00

标签: regex sed

Input: [[target|visible]]
Output: visible

这是我的尝试:

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

(未读和间隔以便于阅读:

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

但它不起作用。

编辑:解决了它:

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

2 个答案:

答案 0 :(得分:0)

试试awk,它更适合这项工作。拆分为“|”然后得到第二个字段。就那么简单。根据需要删除]

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

或任何可轻松拆分字符串的工具。例如Ruby(1.9 +)

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

答案 1 :(得分:0)

您可以将扩展正则表达式与sed -r

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

我没有找到如何将|与基本正则表达式匹配...