2011-02-01 10 views
1

シェルのhtmlページから、私のローカルエリアの温度を示すスクリプトの一部としてテキストを取得しようとしています。htmlページのシェルからのテキストの取得

しかし私は、適切に

抜粋Webページ

</div><div id="yw-forecast" class="night" style="height:auto"><em>Current conditions as of 8:18 PM GMT</em><div id="yw-cond">Light Rain Shower</div><dl><dt>Feels Like:</dt><dd>6 &deg;C</dd><dt>Barometer:</dt><dd style="position:relative;">1,015.92 mb and steady</dd><dt>Humidity:</dt><dd>87 %</dd><dt>Visibility:</dt><dd>9.99 km</dd><dt>Dewpoint 

から

<dt>Feels Like:</dt><dd>6 &deg;C</dd> 

が6をつかむしようとすると、さらに削減短い除いてはgrepを使用する方法の周りに私の頭を取得することはできません° C

私はさまざまな戦術(grepやawkを含む)シェルウィザードは私を助けることができますか?あなたも<dd></dd>を取り除きたい場合は、単に| cut -b 5-12を追加し、

-e PATTERN, --regexp=PATTERN 
     Use PATTERN as the pattern. This can be used to specify 
     multiple search patterns, or to protect a pattern beginning with 
     a hyphen (-). (-e is specified by POSIX.) 

... 

-o, --only-matching 
     Print only the matched (non-empty) parts of a matching line, 
     with each such part on a separate output line. 

答えて

1

は、manページから

grep -o -e "<dd>.*deg;C</dd>" the_html.txt 

を試してみてください。

+0

$はgrep -o -e "

[^ <]*deg;C
" /tmp/weather.html $ C –

+0

右。それらのddタグを取り除く方法を含むように答えを更新しました。 – aioobe

+0

ありがとう、この問題は私を狂って運転している! –

0

xが入力ファイルで、HTMLソースは次のように定期的に書き込みとしてフォーマットされている場合、これは動作するはずです -

グレップ度X | SED -e "S#^ >(° \ [0-9] {1,2} [CF])<#\#1。"

セス

1

この試してみて:

grep -Po '(?<=Feels Like:</dt><dd>).*?(?=</dd>)' | sed 's/ &deg;/°/' 

結果:

6°C 
+0

いい考えですが、私は見た目について考えていましたが、 'grep'で実装されていないことを読んでください...' -P'はトリックをします:-) – aioobe

関連する問題