【发布时间】:2014-06-06 03:05:47
【问题描述】:
我有一个 gawk 脚本,它在一个变量中积累了一堆 HTML,现在应该通过系统命令将它通过管道传递给 lynx。
(请随时告诉我 AWK 是一个糟糕的解决方案...while read LINE; 非常糟糕(慢),所以这是采取 2)
我在 awk 中试过这个:
cmd = sprintf( "bash -c \'lynx -dump -force_html -stdin <<< \"%s\"\'", html )
system ( cmd )
坏主意,虽然简单的测试用例可以工作,但原始 HTML、特殊字符问题和字符串终止问题比比皆是,并且转义内转义正变得复杂得令人难以置信。
lynx 可以很好地处理我在 stdin 上抛出的任何内容,如果不通过命令行将其从 awk 传递到 stdin,我就无法将其传输到 stdin,这似乎是一个笨拙的解决方案。
编辑(添加有关我的最终目标的详细信息)以防 awk 不是一个好方法:
我想要的是从一个大文本文件中解析出 HTML,并在 html 块之间使用分隔符。我需要将每个 HTML 块传递给 lynx 进行格式化并将其转储到一个新的大文本文件中。
示例输入(来自另一个系统的转储):
**********URL: http://some/url
<html>
<head><title>Any 'ol HTML document</title</head>
<body>
<p>With pretty much any character you can imagine at some point</p>
<p>I'm using lynx to strip off the HTML and give me a nice format</p>
</body>
</html>
**********URL: http://another/url
<html><head><title>My input file provides a few 100,000 such html documents</title></head>
<body/></html>
每个 HTML 文档都应该通过lynx -dump 提供。 Lynx 可以从文件(例如命名管道,或者文件是一个选项)或标准输入(使用 -stdin 选项)中读取 HTML。
然后我的输出是:
**********URL: http://some/url
Any 'ol HTML document
With pretty much any character you can imagine at some point
I'm using lynx to strip off the HTML and give me a nice format
**********URL: http://another/url
My input file provides a few 100,000 such html documents
【问题讨论】:
-
是的,如果 awk 中没有解决方案,这是一个很好的答案,我会继续前进。但是 awk 很大,而且我是它的初学者,所以我很难不问就知道这一点。你知道 awk 到可以这么说吗?
-
您能否详细说明
a bunch of HTML是什么以及您期望lynx对它使用一些示例输入/输出做什么?另外 - 今天刚刚发现|&for gawk 协同进程 (seen here),这似乎是您可以使用的东西。 -
来自网络上随机站点的原始 HTML 源代码。与 awk 协进程的链接看起来确实是一针见血,早上第一件事就是尝试一下。我在问题中添加了有关我的最终目标的更多详细信息。
-
@DavidParks 如果你不能提供样本输入,即使是假的,我觉得这个问题无济于事。