0
我使用shell腳本對webmodem的HTML診斷頁面源代碼進行網絡掃描,我需要修復摩托羅拉完成的一些編碼錯誤。在該種打破了東西的輸入標籤的末端缺少閉合>
由於前述的</td>
是動態的,我需要能夠動態地固定標記的值如何修復shell腳本中的字符串(刪除
例字符串:。 <td bgcolor=#E7DAAC width=138 colspan=2><input type="text" name="NumberOfCpes" size="3" maxlength="3" value=253 </td>
看看它如何結束value=253 </td>
如何在整個頁面中用「>」替換空格?請記住,還有其他地方的</td>
在這些頁面之前有空格,因此sed 's/ <\/td>/><\/td>/g'
將無法正常工作。
感謝您的幫助
你需要支持之類的東西'
@TomaszLewowski它應該是's/<([^ <*])<\1> g'因爲'*'匹配貪婪。 – hek2mgl
@ hek2mgl謝謝您的更正 –
回答
雖然它沒有很好地形成HTML它不應該打破你的工具 - 如果你正在使用正確的工具。
要解析HTML,您需要使用DOM解析器。我建議使用XPath。從Linux上的命令行,您可以使用
xmllint
,它是包libxml2-utils
的一部分。 DOM解析器可用槽libxml2
(Linux上的常用xml庫)可以解析上述無效輸入。比方說,你要提取的輸入值:
它報告的HTML解析錯誤,你可以重定向到
/dev/null
:,但仍讓你在標準輸出正確的價值:
但是,當然這是令人討厭的,該網站親完全無效的HTML。
來源
2016-01-07 18:50:57 hek2mgl
也許我沒有用「解析」來表達我自己,抓住源代碼中的信息位或通過使用grep和sed轉儲lynx的HTML輸出我找到了我需要的東西。這個破碎的標籤會導致l to在轉儲的輸出上顯示一個空的輸入框。至少在短期內,DOM解析器對我來說可能看起來有些過分。但我會在稍後研究一些學習。謝謝 – vizi0n
大聲笑!你正在使用Lynx並說DOM解析器(如xmllint)是開銷?! lynx如何解析HTML?魔法? – hek2mgl
我正在使用wget或lynx從調制解調器獲取HTML源代碼,如果我只需要轉儲瀏覽器輸出,就直接使用lynx。我需要的一些信息不是特定的標籤,只是純文本,所以我使用grep,sed並剪切了很多。也許解析不是我所做的正確的術語。 – vizi0n
與sed的
例如一個正則表達式和替換的方法,如果你有以下
你的輸出就會
來源
2016-01-07 22:14:56 repzero
相關問題