假設以下html代碼。
<div class='requirement'>
<div class='req-title'>
The quick brown fox jumps over the lazy dog
</div>
</div>
我想使用or之類的The quick brown fox jumps over the lazy dog工具進行提取,我很確定可以完成。awksed
我知道 html 決議器是完成這項作業的正確工具,但這是我唯一一次處理 html 內容。
uj5u.com熱心網友回復:
假設您要列印的部分是一行:
$ awk 'f{print; exit} $0=="<div class=\047req-title\047>"{f=1}' file
The quick brown fox jumps over the lazy dog
否則:
$ awk 'f{if ($0=="</div>") exit; print} $0=="<div class=\047req-title\047>"{f=1}' file
The quick brown fox jumps over the lazy dog
uj5u.com熱心網友回復:
file.txt假設有內容的換行符(HTML 不需要)
<div class='requirement'>
<div class='req-title'>
The quick brown fox jumps over the lazy dog
</div>
</div>
您可以AWK按照以下方式使用 GNU 執行此任務
awk '/<div class=\x27req-title\x27>/{p=1;next}/<\x2fdiv>/{p=0}p{print}' file.txt
給出輸出
The quick brown fox jumps over the lazy dog
說明:如果<div class='req-title'>遇到設定p為1并轉到下一行,如果</div>遇到設定p為0。如果p print是當前行。請注意,我使用十六進制表示特殊含義的字符。警告這個解決方案是脆弱的,即使是很小的改變也可能會失敗,例如如果"使用而不是,標簽 &c 中'添加了另一個屬性。div
(在 gawk 4.2.1 中測驗)
我知道 html 決議器是完成這項作業的正確工具,但這是我唯一一次處理 html 內容。
如果允許安裝工具,請考慮使用hxselect,它允許提取與 CSS 選擇器匹配的標簽或其內容,在這種情況下,它就像
cat file.txt | hxselect -i -c div.req-title
-i表示不區分大小寫(HTML 不區分大小寫),-c僅表示內容(不包括開始和結束標記)div.req-title是CSS 選擇器含義div,它具有 class req-title。這應該比 GNUAWK解決方案更健壯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/455245.html
