我在下面附加的 HTML 程式碼中遇到了另一個 grep/awk/sed 問題。
給的是一個簡單的 HTML 文件,裡面有表格。 HTML 由智慧電錶(家用電錶)產生。在 html 表中,顯示了兩個對我來說很重要的值:Pplus 和 Pminus。這些是來自電網的實際功率和來自我的太陽能發電廠的實際功率。
我想以「穩定/安全」的方式分別取得這兩個值,以減少出錯的可能性。我的理解是html結構永遠不會改變。作為查找值的起點,18.000
意味著來自電網的 18W 當前功率,0.00000
意味著我的太陽能發電廠目前產生的 0W 功率(夜晚)。
對於我自己來說,幾乎不可能找到一些可以幫助抓住正確位置的結構,我真的很感謝您在這裡的專家觀點以及是否有可能使這項工作成功。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<TITLE>NK-FW graphic by Lingg & Janke</TITLE>
<LINK REL="apple-touch-icon" HREF="/NKFW_icon57.png">
<META NAME="description" CONTENT="NK-FW graphic by Lingg & Janke">
<META HTTP-EQUIV="cache-control" CONTENT="no-cache">
<BASE TARGET="_top">
<STYLE TYPE="text/css">
BODY {margin-left:0; margin-right:0; margin-top:0;}
A {font-family:Arial; font-size:18px; font-weight:bold; color:#FFFFFF; }
TABLE {font-family:Arial; font-size:18px; font-weight:bold; color:#FFFFFF; }
INPUT {font-family:Arial; font-size:18px; font-weight:bold; color:#000000; }
SELECT{font-family:Arial; font-size:18px; font-weight:bold; color:#000000; }
.inputwidth {width:190px;}
.keywidth {width:190px;}
#idLJheadDiv {
position:absolute;
width:960px;
height:50px;
top:10px;
left:0px;
padding:0px;
margin:0px;
border:0px;
background-color:#0074B2;
}
#idLJheadTd1 {
font-size:30px;
font-family:Arial;
font-weight:bold;
font-style:normal;
color:#FFFFFF;
height:50px;
text-align:left;
vertical-align:middle;
}
#idLJheadTd2 {
font-size:20px;
font-family:Arial;
font-weight:bold;
font-style:normal;
color:#FFFFFF;
height:50px;
text-align:center;
vertical-align:middle;
}
#idLJheadTd3 {
font-size:30px;
font-family:Arial;
font-weight:bold;
font-style:italic;
color:#FFFFFF;
height:50px;
text-align:right;
vertical-align:middle;
}
#idLJfootDiv {
position:absolute;
width:960px;
height:50px;
top:600px;
left:0px;
padding:0px;
margin:0px;
border:0px;
background-color:#0074B2;
}
#idLJfootTd {
font-size:30px;
font-family:Arial;
font-weight:bold;
font-style:italic;
color:#FFFFFF;
height:50px;
text-align:left;
vertical-align:middle;
}
#idButtonDiv {
position:absolute;
width:228px;
height:50px;
padding:0px;
margin:0px;
border:0px;
background-color:#2f2f2f;
}
#idButtonTd {
height:50px;
vertical-align:middle;
}
</STYLE>
</HEAD>
<!-- ************************** -->
<BODY SCROLL="auto"
onResize="DoReposition();"
onLoad="DoReposition();"
BGCOLOR="#000000"
TOPMARGIN=0
LEFTMARGIN=0
LINK=#ffffff
VLINK=#ffffff
ALINK=#ffffff >
<!-- ************************** -->
<SCRIPT LANGUAGE="JavaScript">
<!--
function HOffset()
{
var window_width = window.innerWidth ? window.innerWidth : (document.body.clientWidth ? document.body.clientWidth : 0);
return Math.max( 0, Math.floor( (window_width - 960) / 2 ) - 0 ).toString();
}
function VOffset()
{
var window_height = window.innerHeight ? window.innerHeight : (document.body.clientHeight ? document.body.clientHeight : 0);
return 0;
}
document.write( "<DIV ID='IDAlignPage' style='position:absolute; top:" + VOffset() + "px; left:" + HOffset() + "px;'> " );
function DoReposition()
{var o='IDAlignPage';
if(is_dom2&&document.getElementById(o))
{var e=document.getElementById(o);e.style.left=HOffset()+'px';e.style.top=VOffset()+'px';}
else if(is_ie&&is_major>=4&&eval('document.all.'+o))
{var e=eval('document.all.'+o);e.style.left=HOffset()+'px';e.style.top=VOffset()+'px';}
else if(is_nav&&is_major>=4&&eval('document.'+o))
{var e=eval('document.'+o);e.left=HOffset();e.top=VOffset();}
}
window.onresize=DoReposition;
window.onload=DoReposition;
//-->
</SCRIPT>
<!-- ************************** -->
<!-- *** upper + lower bar *** -->
<DIV ID="idLJheadDiv">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" WIDTH=100%><TR>
<TD ID="idLJheadTd1"> Smart Metering</TD>
<TD ID="idLJheadTd2">
SA
21.06.2014
21:57:02
KW25
</TD>
<TD ID="idLJheadTd3">Lingg & Janke </TD>
</TR></TABLE>
</DIV>
<DIV ID="idLJfootDiv">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" WIDTH=100%><TR>
<TD ID="idLJfootTd"> Energy Analyzer</TD>
</TR></TABLE>
</DIV>
<!-- ************************** -->
<!-- *** 1. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:78px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
P+ in Watt
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:78px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:78px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:78px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 2. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:143px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
18.000
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:143px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g1.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="MykWh">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:143px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g2.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="Supply">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:143px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 3. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:208px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
P- in Watt
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:208px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g3.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="G 3">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:208px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g4.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="G 4">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:208px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 4. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:273px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
0.00000
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:273px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g5.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="G 5">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:273px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g6.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="G 6">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:273px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
P+
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 5. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:338px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:338px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g7.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="G 7">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:338px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="g8.htm" method="GET">
<input type="submit" class="keywidth" name="A" value="G 8">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:338px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 6. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:403px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:403px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:403px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:403px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 7. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:468px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:468px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:468px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:468px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
<!-- *** 8. row *************** -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:533px; left:0px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="/index.htm" method="GET">
<input type="submit" class="keywidth" value="ZURCK" name="A">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" STYLE="top:533px; left:244px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:533px; left:488px;" ALIGN="CENTER">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- -->
<DIV ID="idButtonDiv" style="top:533px; left:732px;" ALIGN="CENTER" >
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0"><TR><TD ID="idButtonTd">
<form action="/mainset/mainset.htm" method="GET">
<input type="submit" class="keywidth" value="EINRICHTEN" name="A">
</form>
</TD></TR></TABLE>
</DIV>
<!-- -->
<!-- ************************** -->
</BODY>
</HTML>
我已經嘗試過上面提到的命令,但它們似乎不起作用。
下面的評論,關於 python,這將如何工作,有人可以幫我一把嗎?我沒有任何偏好,但當然更喜歡在各個方面(速度、效率…)看起來最先進的最佳解決方案
發布的 HTML 不會改變,只是值每 10 秒更新一次。
答案1
> awk '/ID="idButtonTd"/ {printline=1; next;};
printline==1 && /^[0-9]+\.[0-9]+$/ { print $0; }; { printline=0; }' file
18.000
0.00000
答案2
如果 html 結構確實是不變的,那麼以下應該可以工作:
totalValues=$(grep -A1 "idButtonTd" yourfile | grep -v "idButtonTd" | grep -v "\-\-" | grep "^[0-9][0-9]*")
Pplus=$(echo $totalValues | awk '{ print $1 }')
Pminus=$(echo $totalValues | awk '{ print $2 }')
echo "Pplus = $Pplus"
echo "Pminus = $Pminus"