bash - Bash,sed,从 html 行中获取 2 个特定字符串,存储为 csv
问题描述
问题
我解析了 html 文件,这里是结果示例。
...
<p style="position:absolute;top:552px;left:26px;white-space:nowrap" class="ft1729"><a href="114281">114281</a></p>
<p style="position:absolute;top:403px;left:688px;white-space:nowrap" class="ft1729"><a href="114282">114282</a></p>
<!-- Page 18 -->
<p style="position:absolute;top:956px;left:485px;white-space:nowrap" class="ft1829"><a href="145041">145041</a></p>
<p style="position:absolute;top:1192px;left:485px;white-space:nowrap" class="ft1829"><a href="112476">112476</a></p>
<p style="position:absolute;top:675px;left:485px;white-space:nowrap" class="ft1829"><a href="145040">145040</a></p>
<p style="position:absolute;top:430px;left:59px;white-space:nowrap" class="ft1829"><a href="430258">430258</a></p>
<p style="position:absolute;top:1063px;left:51px;white-space:nowrap" class="ft1829"><a href="107267">107267</a></p>
<p style="position:absolute;top:586px;left:246px;white-space:nowrap" class="ft1829"><a href="145042">145042</a></p>
<p style="position:absolute;top:156px;left:446px;white-space:nowrap" class="ft1829"><a href="440332">440332</a></p>
<!-- Page 19 -->
<p style="position:absolute;top:1205px;left:53px;white-space:nowrap" class="ft1938"><b>1 790,- </b>|<a href="457710"> 457710</a></p>
<p style="position:absolute;top:1205px;left:634px;white-space:nowrap" class="ft1938"><b>2 290,- </b>|<a href="464429"> 464429</a></p>
<p style="position:absolute;top:924px;left:353px;white-space:nowrap" class="ft1938"><b>2 590,- </b>|<a href="464430"> 464430</a></p>
<p style="position:absolute;top:924px;left:53px;white-space:nowrap" class="ft1938"><b>1 990,- </b>|<a href="457711"> 457711</a></p>
<p style="position:absolute;top:1205px;left:354px;white-space:nowrap" class="ft1938"><b>2 990,- </b>|<a href="465337"> 465337</a></p>
<p style="position:absolute;top:344px;left:642px;white-space:nowrap" class="ft1938"><b>4 990,- </b>|<a href="460435"> 460435</a></p>
<p style="position:absolute;top:924px;left:634px;white-space:nowrap" class="ft1938"><b>3 990,- </b>|<a href="464432"> 464432</a></p>
<p style="position:absolute;top:617px;left:641px;white-space:nowrap" class="ft1938"><b>2 990,- </b>|<a href="436458"> 436458</a></p>
<!-- Page 20 -->
<p style="position:absolute;top:589px;left:637px;white-space:nowrap" class="ft2029"><a href="217822">217822</a></p>
<p style="position:absolute;top:853px;left:32px;white-space:nowrap" class="ft2029"><a href="217824">217824</a></p>
<p style="position:absolute;top:616px;left:333px;white-space:nowrap" class="ft2029"><a href="218228">218228</a></p>
<p style="position:absolute;top:894px;left:333px;white-space:nowrap" class="ft2029"><a href="226105">226105</a></p>
...
有没有一些简单的方法从上面的输出中得到下面的输出?第一个值page
来自<!-- Page PAGE -->
,第二个值NUMBER
来自<a href="NUMBER">
。如果PAGE
是<!-- Page 1 -->
,请改为用字符串Title
替换1
。
...
18,145041
18,112476
18,145040
18,107275
18,145042
18,440332
19,457710
19,464429
...
我只是为了这个数字而尝试过。
grep '<a href=' file.html | sed -n '/<a href="/,/">/p'
但是没有效果。
谢谢。
解决方案
像这样awk
的人可以吗?
awk '/Page/ {h=$3} /-- Page 1 --/ {h="Title"} /href=/ && h {split($0,a,"\"");print h","a[6]}'
18,145041
18,112476
18,145040
18,430258
18,107267
18,145042
18,440332
19,457710
19,464429
19,464430
19,457711
19,465337
19,460435
19,464432
19,436458
20,217822
20,217824
20,218228
20,226105
何时Page
找到将第 3 列存储在h
(页码)中。
然后如果href
,用双引号分割行并找到值并用页面值打印。
推荐阅读
- python - 为什么 python 将我的字典解释为字符串?
- python - tkinter 在 jupyterhub 中以 Pyspark 为特色
- javascript - 键入时 Typeahead 未调用搜索 API
- javascript - 使用 else-if 切换 Javascript 图标
- java - 将泛型复制到数组?
- html - Nodejs如何在不改变页面外观的情况下将ejs文件转换为pdf文件
- android - 快速点击 Android 的概览按钮两次时发生内部异常/崩溃
- java - 将 JTextField 文本放入 JList
- android - Room 预打包的数据库具有无效的架构
- sql - 在 Access 2016 中按组计算总百分比