![HTML 파일에서 값 추출](https://linux55.com/image/54981/HTML%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EA%B0%92%20%EC%B6%94%EC%B6%9C.png)
2개의 HTML 파일이 있는데 그 중 일부는 다음과 같습니다.
파일 1에서:
<td width="48%" align="right" valign="top">
<b>mom. Wirkleistung P+ tot.: </b><br>
<b>mom. Wirkleistung P+ L1: </b><br>
<b>mom. Wirkleistung P+ L2: </b><br>
<b>mom. Wirkleistung P+ L3: </b><br>
</td><td width="4%" align="middle">
</td><td width="48%" valign="top">
<b>114,00 W </b><br>
<b> 2,00 W </b><br>
<b>109,00 W </b><br>
<b> 2,00 W </b><br>
</td></tr></table>
<p></td>
파일 2에서:
<b>mom. Wirkleistung P- tot.: </b><br>
<b>mom. Wirkleistung P- L1: </b><br>
<b>mom. Wirkleistung P- L2: </b><br>
<b>mom. Wirkleistung P- L3: </b><br>
</td><td width="4%" align="middle">
</td><td width="48%" valign="top">
<b> 45,00 W </b><br>
<b> 0,00 W </b><br>
<b> 0,00 W </b><br>
<b> 0,00 W </b><br>
</td></tr></table>
두 파일 모두에 첫 번째 와트 값(114.00과 45.00, 물론 5초마다 변경됨)을 사용하고 합계를 합치고 싶습니다.
저는 RASPBERRY PI(Debian Linux 수행)를 사용하고 있는데 두 파일에서 이 값을 추출하여 함께 추가하여 5.00, 66.70 또는 1444.24 값이 포함되어 있어도 작동하도록 하는 방법이 있습니까?
전체 문서 아래 첨부…
<html><head>
<title>FacilityWeb</title>
<meta http-equiv="cache-control" content="no-cache">
<style type="text/css">
#idHF {font-family:Arial; font-size:30px; color:#FFFFFF }
a {font-family:Arial; font-size:20px; color:#FFFFFF }
table {font-family:Arial; font-size:20px; color:#FFFFFF }
input {font-family:Arial; font-size:20px; font-weight:bold; color:#000000 }
select {font-family:Arial; font-size:20px; font-weight:bold; color:#000000 }
</style>
</head>
<body bgcolor="#000000" link=#ffffff vlink=#ffffff alink=#ffffff>
<table align="center" border="0" width="960" cellspacing="0" cellpadding="8">
<tr><td id="idHF" align="right" valign="middle" bgcolor="#0074B2">
<b><i>Lingg & Janke </i></b></td></tr></table>
<p><table align="center" border="0" width="960" bgcolor="#2f2f2f"><tr>
<!-- BCU part begin -->
<td align="center">
<a href="valpap">[ LEISTUNG P+ ]</a> <a href="valpan">[ LEISTUNG P- ]</a>
<a href="valprp">[ LEISTUNG Q+ ]</a> <a href="valprn">[ LEISTUNG Q- ]</a><br>
<a href="valv">[ SPANNUNG ]</a> <a href="valc">[ STROM ]</a>
<a href="valx">[ COS PHI ]</a><br>
<a href="valpapt">[ GRENZWERTE P+ tot. ]</a><br><a href="valpap1">[ GRENZWERTE P+ L1 ]</a>
<a href="valpap2">[ GRENZWERTE P+ L2 ]</a> <a href="valpap3">[ GRENZWERTE P+ L3 ]</a><br>
<a href="/1.1.2/">[ HOME ]</a>
<p><b>Wirkleistungen P+ (Bezug)</b><p>
<table width="100%"><tr>
<td width="48%" align="right" valign="top">
<b>mom. Wirkleistung P+ tot.: </b><br>
<b>mom. Wirkleistung P+ L1: </b><br>
<b>mom. Wirkleistung P+ L2: </b><br>
<b>mom. Wirkleistung P+ L3: </b><br>
</td><td width="4%" align="middle">
</td><td width="48%" valign="top">
<b> 70,00 W </b><br>
<b> 2,00 W </b><br>
<b> 64,00 W </b><br>
<b> 2,00 W </b><br>
</td></tr></table>
<p></td>
<!-- BCU part end -->
</tr></table><p>
<table align="center" border="0" width="960" cellspacing="0" cellpadding="8">
<tr><td align="center" valign="middle" bgcolor="#0074B2">
<a id="idHF" href="/en/main.htm"><b>HOME</b></a></td></tr></table>
</body></html>
답변1
입력 파일이 각각 a.txt 및 b.txt라고 가정하고,
sed -e 's/<[^>]*>//g' -e s/,/./ a.txt|awk '/W/ { s+=$1 } END { print s }'
227
sed -e 's/<[^>]*>//g' -e s/,/./ b.txt|awk '/W/ { s+=$1 } END { print s }'
45
0,12 W
이는 10진수 데이터(예: 주어진 ) 를 사용하는 경우에도 작동합니다 45.12
.
항상 10진수 데이터를 원하는 경우
sed -e 's/<[^>]*>//g' -e s/,/./ a.txt|awk '/W/ { s+=$1 } END { printf "%.2f\n", s }'
227.00
편집하다: 첫 번째 값만 얻으려면($2는 W이고 $1을 인쇄합니다)
sed -e 's/<[^>]*>//g' -e s/,/./ a.txt|awk '/W/ { print $1 ; exit ; }'
편집 2:전체 로그를 사용하여 W와 일관성을 유지하려고 합니다.
sed -e 's/<[^>]*>//g' -e s/,/./ a.txt|awk '$2 == "W" { print $1 ; exit ; }'
70.00
편집 3:두 개의 값을 추가합니다.
가장 쉬운 방법은 bash 기능을 사용하여 숫자를 추가하는 것입니다.
파일이 files1.html 및 files2.html에 있다고 가정해 보겠습니다.
VAR1=$(sed -e 's/<[^>]*>//g' -e s/,/./ files1.html |awk '$2 == "W" { print $1 ; exit ; }' )
VAR2=$(sed -e 's/<[^>]*>//g' -e s/,/./ files2.html |awk '$2 == "W" { print $1 ; exit ; }' )
SUM=$(($VAR1 + $VAR2))