移动<a id=""> tag before the </a> <a href=""> tag</a>

时间:2013-06-27 09:09:00

标签: html tags grep position move

标签的位置需要在标签之前。我需要排序500个实例。

例如:

<h2 class="chapter-title"><a href="contents.html#Endnotes"><a id="Anchor"/>Endnotes and References</a></h2>

我正在寻找

(<a [^>]*href\s*=\s*")([^"]+)("[^>]*>)(<a [^>]*id\s*=\s*")([^"]+)("[^>]*>) 

正确地拿起两个标签,但我正在努力找到正确的替换来纠正位置。

帮助!! ???

3 个答案:

答案 0 :(得分:2)

这对我有用:

$ sed 's#\(<a href[^>]*>\)\(<a id[^>]*>\)#\2\1#g' b
<h2 class="chapter-title"><a id="Anchor"/><a href="contents.html#Endnotes">Endnotes and References</a></h2>

我们查找文本<a href[^>]并将其保存在第一个var中。然后我们查找文本<a id[^>]并保存在第二个var中。最后我们交换它们。

请注意,<a id[^>]表示“从<a id开始到>个字符的所有内容。

答案 1 :(得分:0)

我这应该工作。您只需要两个捕获组,一个用于<a href...>,另一个用于<a id...>

sed 's#\(<a [^>]*href\s*=\s*"[^"]+"[^>]*>\)\(<a [^>]*id\s*=\s*"[^"]+"[^>]*>\)#\2\1#'

答案 2 :(得分:0)

你可以尝试这个,我认为这应该有用

<a id="Anchor" href="contents.html#Endnotes">EndNotes and Refrences</a>