我正在尝试从shell中的html页面获取文本,作为脚本的一部分向我展示我当地的温度。
但是我无法理解如何正确使用grep
摘自网页
</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 °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 °C</dd>
试图抓住6°C
我尝试了各种不同的策略,包括grep和awk。 shell向导可以帮助我吗?
答案 0 :(得分:1)
尝试
grep -o -e "<dd>.*deg;C</dd>" the_html.txt
从手册页:
-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.
如果您想摆脱<dd>
和</dd>
,只需附加| cut -b 5-12
。
答案 1 :(得分:1)
尝试一下:
grep -Po '(?<=Feels Like:</dt><dd>).*?(?=</dd>)' | sed 's/ °/°/'
结果:
6°C
答案 2 :(得分:0)
如果x是您的输入文件,并且HTML源的格式与您的写入一样,那么这应该有效 -
grep deg x | sed -e“s#^。&gt;([0-9] {1,2} \°[CF])&lt;。#\ 1#”
赛斯