Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从shell杀死HTML节点_Html_Linux_Sed_Html Parsing - Fatal编程技术网

从shell杀死HTML节点

从shell杀死HTML节点,html,linux,sed,html-parsing,Html,Linux,Sed,Html Parsing,需要一个解决方案从多个HTML文件中杀死像foobar和这样的节点 我想把一个没有菜单和页脚的站点转储到磁盘上。理想情况下,我将使用基本的unix工具(如sed)完成此任务。因为它不是XML,所以我不能使用xmlstarlet 任何人都可以建议食谱,这样我就可以理想地让一个脚本运行kill-node.sh'div class=“toplinks”*.html来删减我不想要的部分。谢谢,sed基于正则表达式。用正则表达式解析html是一个在这里反复出现的主题,请参见e.g或甚至更好 这就是说,如果

需要一个解决方案从多个HTML文件中杀死像
foobar
这样的节点

我想把一个没有菜单和页脚的站点转储到磁盘上。理想情况下,我将使用基本的unix工具(如sed)完成此任务。因为它不是XML,所以我不能使用
xmlstarlet


任何人都可以建议食谱,这样我就可以理想地让一个脚本运行
kill-node.sh'div class=“toplinks”*.html来删减我不想要的部分。谢谢,sed基于正则表达式。用正则表达式解析html是一个在这里反复出现的主题,请参见e.g或甚至更好


这就是说,如果html页面是以类似的方式编写的,那么您可能仍然能够构造一个执行此任务的regexp,但是要准备好,使用regexp构建一个在所有情况下都能工作的完整解决方案是不可能的(是的,理论上确实是不可能的)。

为了让您讨厌regex的人发疯,请尝试以下尺寸:

sed”:a;$!N、 美元!文学士;s/B/-B/g;s/A/BB/g;s//A/g;:Bs/[^A]*A/;结核病;s/BB/A/g;s/-B/B/g'foo.html

foo.html
为:

<header>
keep me
<foo>gtg</foo>
</header>
<foo>
delete me</foo>
<foo>gtg</foo>
<foo>gtg</foo>

留着我
得走了
删除我
得走了
得走了

否则,有人可以执行cmdline。谢谢x

在我的例子中,匹配开始和结束标记应该很简单。尽管如此,如果你能推荐一个更明智的命令行工具,我洗耳恭听@亨德利不能坚持,太晚了!HTML和regex会引发一些本能反应,所以您可能想提供更多信息。这是跨多种文件的长期解决方案,还是跨有限的一组文件的一次性交易?目标节点在文件中的格式化方式是否有很多差异,或者它们是否相同?如果它们相同,您能否更具体地说明它们在文件中的布局方式?我们可以先用[X]HTML规范化程序修改整个文件吗?还是严格限制删除目标节点?一次成功。几乎一模一样。我希望我知道如何从*.html中删除相同的30行文本块。:)[十] HTML规范化程序。。。你是说整洁吗?我不喜欢tidy,因为它不支持HTML5,它需要至少半个小时的切换才能输出正常的东西。