我想编写用于搜索的bash脚本,按类名复制和粘贴元素。我是bash的新手。有人可以帮我或给我一个建议吗?
例如,
<div class="elementOne">..</div>
<div class="elementTwo">
<div class="SubelementOne">....</div>
<div class="SubelementTwo">....</div>
</div>
我想选择&#34; SubelementTwo&#34;并把它放在&#34; elementOne&#34;
之下答案 0 :(得分:3)
首先将HTML转换为XHTML,然后使用XML工具进行任何修改。
如果你有这样的输入:
$ cat foo
<div class="elementOne">..</div>
<div class="elementTwo">
<div class="SubelementOne">....</div>
<div class="SubelementTwo">....</div>
</div>
使用tidy
将其清理为有效的XHTML,然后在类SubelementTwo
的元素下轻松移动类elementOne
的元素:
$ tidy -asxhtml foo 2>/dev/null | \
xmlstarlet ed -m '//*[@class="SubelementTwo"]' '//*[@class="elementOne"]'
<?xml version="1.0"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.2.0"/>
<title/>
</head>
<body>
<div class="elementOne">..<div class="SubelementTwo">....</div></div>
<div class="elementTwo">
<div class="SubelementOne">....</div>
</div>
</body>
</html>
这比regex based解决方案更强大。