我有一個gawk腳本,它在一個變量中累積了一堆HTML,現在應該通過系統命令將它傳遞給lynx。將未過濾的文本傳輸到awk系統命令的stdin
(隨時告訴我AWK是一個糟糕的解決方案... while read LINE;
是瘋狂壞(慢),所以這是需要2)
我在AWK試過這樣:
cmd = sprintf("bash -c \'lynx -dump -force_html -stdin <<< \"%s\"\'", html)
system (cmd)
壞想法,雖然簡單的測試用例可以工作,但原始HTML,特殊字符問題和字符串終止問題比比皆是,逃逸中的轉義內轉義只是變得複雜。
lynx可以很好地處理我在stdin上拋出的任何東西,我不能從awk中將它傳遞給標準輸入,而無需通過命令行對它進行管道處理,這似乎是一個難以實現的解決方案。
編輯(添加我的最終目標細節)的情況下,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(使用-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
http://mywiki.wooledge.org/XyProblem –
唉,如果有在AWK無解,這是一個很好的答案,我會繼續前進。但是awk很大,我是一個相對的初學者,所以我很難確切地知道這個問題。你知道awk足夠好嗎? –
你能詳細說明一堆HTML是什麼,以及你期望用'lynx'做一些樣本輸入/輸出嗎?此外 - 剛剛發現['|&'爲gawk](http://www.gnu.org/software/gawk/manual/html_node/Two_002dway-I_002fO.html#Two_002dway-I_002fO)coprocesses今天([這裏看到] (http://stackoverflow.com/q/24066356/1259917))這似乎是你可以使用的東西。 – n0741337