I am trying to create a BASH/Perl script which would get a specific value from a dynamic html table.
Here is a sample of my page
<table border="1" bordercolor="#FFCC00" style="background-color:#FFFFCC" width="100%" cellpadding="3" cellspacing="3"> <tr align="center"> <th>Environment</th><th>Release Track</th><th>Artifact</th><th>Name</th><th>Build #</th><th>Cert Idn</th><th>Build Idn</th><th>Request Status</th><th>Update Time</th><th>Log Info.</th><th>Initiator</th> </tr> <tr> <td>DEV03</td><td>2.1.0</td><td>abpa</td><td>ecom-abpa-ear</td><td>204</td><td>82113</td><td>171242</td><td>Deployed</td><td>3/18/2013 3:10:58 PM</td><td width="70">Log info</a></td><td>CESAR</td> </tr> <tr> <td>DEV03</td><td>2.1.0</td><td>abpa</td><td>abpa_dynamic_config_properties</td><td>20</td><td>82113</td><td>167598</td><td>Deployed</td><td>3/18/2013 2:32:27 PM</td><td width="70">Log info</a></td><td>CESAR</td> </tr> </table>
My goal is to get this value from this cell.
"Deployed"
Another way to look at it...
Retrieve all data under the "Request Status" column
The value "Deployed" is dynamic and could change.
I have tried the following:
sed -e 's/>/>\n/g' abpa_cesar_status.txt | egrep -i "^\s*[A-Z]+</td>
" | sed -e 's|</td>||g' | grep Deployed
But that only greps for "Deployed"
Any ideas?
You should use a parser such as xmllint to do this.
With xmllint you can extract elements based on an xpath.
For example:
$ xmllint --html --format --shell file.html <<< "cat //table/tr/td[position()=8]/text()"
/ > -------
Deployed
-------
Deployed
/ >
The xpath //table/tr/td[position()=8]/text(), in the command above, returns the values from the 8th table column.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With