Ich sehe die Website bietet (aber nicht kostenlos) Web-Services mit XML oder JSON-Daten ... Es wäre der beste Weg, da die HTML-Seite nicht (leicht) geparst werden soll.
Wie auch immer, nichts ist unmöglich, nichtsdestotrotz wäre die Verwendung von streng nur bash-Befehlen sehr schwer, wenn nicht unmöglich; oft werden mehrere andere gebräuchliche Werkzeuge verwendet, um das Ergebnis zu erzielen. Aber dann wird es manchmal praktischer, sich an ein einzelnes Werkzeug wie z.B. Perl, anstatt cat, grep, awk, sed und was auch immer zu kombinieren.
So etwas wie
sed -e 's/>/>\n/g' region.html |
egrep -i "^\s*[A-Z]+[0-9]+</td>" |
sed -e 's|</td>||g'
arbeitete 200 Zeilen extrahieren, ein bestimmtes Format für den Code angenommen.
ADD
Wenn es an der Software keine Begrenzung ist können Sie die Daten zu analysieren, verwenden, dann könnten Sie eine Zeile wie
wget -q "http://www.geonames.org/postalcode-search.html?q=london&country=GB" -O - |
sgrep '"<table class=\"restable\"" .. "</table>"' |
sed -e 's|/tr>|/tr>\n|g; s|</td>\s*<td[^>]*>|;|g; s|</th>\s*<th[^>]*>|;|g; s|<[^>]\+>||g; s|;; .*$| |g' |
grep -v "^\s*$" |
tail -n+2 | cut -d";" -f2,3
verwenden, die von einem ;
getrennt Orte und Postleitzahlen extrahiert wie in einer CSV, sowie awk:
wget -q "$html" -O - |
w3m -dump -T 'text/html' |
awk '/\s*[0-9]+/{ print substr($0, 11, 16); }'
, die sich auf die Antwort von Peter.O basiert und extrahiert die gleichen Daten ... und so weiter. Da Sie in diesen Fällen jedoch nicht auf die minimalen Werkzeuge beschränkt sind, die auf den meisten Unix- oder GNU-Systemen zu finden sind, würde ich bei einem einzigen weit verbreiteten Werkzeug bleiben, z. Perl.
Bash ist das falsche Werkzeug für diesen Job. Betrachten Sie ein Perl-, Python- oder Ruby-Skript. – pguardiario