というファイルがあり、次のような結果が得られindex.html
ましたgrep '<td class="headerCovTableEntryLo">' index.html
。
<td class="headerCovTableEntryLo">39.2 %</td>
<td class="headerCovTableEntryLo">56.6 %</td>
39.2を求めるだけです。どうすればいいですか?
ベストアンサー1
XMLパーサーを使用できます(例xmlstarlet
:。
xmlstarlet fo -H page.html |
xmlstarlet sel -t -v '//td[@class="headerCovTableEntryLo"][1]' -n 2>/dev/null |
tr -dc '[:digit:].\n'
出力
39.2
最初の呼び出しはxmlstarlet
HTMLを解析し、可能であればそれをXMLに変換します。 2番目の呼び出しはXMLを解析し、一致する属性を持つ<td/>
最初の要素値を抽出します。最後に、文字列からスペースとパーセント文字を削除します(実際には数字、ドット、改行文字を除くすべてを削除します)。class
headerCovTableEntryLo
tr
より正確な一致が必要な場合は、パスを//...
より具体的にするか、より多くのHTMLを公開する必要があります。
呼び出しを避けるには、tr
最初のスペースを除く要素の値を返すだけです(したがって39.2 %
返されます39.2
)。
xmlstarlet fo -H page.html |
xmlstarlet sel -t -v 'substring-before(//td[@class="headerCovTableEntryLo"][1], " ")' -n 2>/dev/null