Bash,sed,从html的行中获取2个特定字符串,存储为csv

Bash,sed,从html的行中获取2个特定字符串,存储为csv,bash,csv,sed,Bash,Csv,Sed,问题 我解析了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="ft172

问题

我解析了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&#160;790,-&#160;</b>|<a href="457710">&#160;457710</a></p>
<p style="position:absolute;top:1205px;left:634px;white-space:nowrap" class="ft1938"><b>2 290,-&#160;</b>|<a href="464429">&#160;464429</a></p>
<p style="position:absolute;top:924px;left:353px;white-space:nowrap" class="ft1938"><b>2 590,-&#160;</b>|<a href="464430">&#160;464430</a></p>
<p style="position:absolute;top:924px;left:53px;white-space:nowrap" class="ft1938"><b>1&#160;990,-&#160;</b>|<a href="457711">&#160;457711</a></p>
<p style="position:absolute;top:1205px;left:354px;white-space:nowrap" class="ft1938"><b>2&#160;990,-&#160;</b>|<a href="465337">&#160;465337</a></p>
<p style="position:absolute;top:344px;left:642px;white-space:nowrap" class="ft1938"><b>4&#160;990,-&#160;</b>|<a href="460435">&#160;460435</a></p>
<p style="position:absolute;top:924px;left:634px;white-space:nowrap" class="ft1938"><b>3&#160;990,-&#160;</b>|<a href="464432">&#160;464432</a></p>
<p style="position:absolute;top:617px;left:641px;white-space:nowrap" class="ft1938"><b>2&#160;990,-&#160;</b>|<a href="436458">&#160;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>

...
我试过就是为了这个数字

grep '<a href=' file.html | sed -n '/<a href="/,/">/p'

grep'一些像这样的
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
当找到
页面
时,将第三列存储在
h
(页码)中。

然后,如果
href
,将该行用双引号分开,找到值并用页面值打印出来。

@jnevil谢谢,但我认为这是可能的,我需要什么。我只想使用
sed
从每一行获取
之间的字符串。然后通过一些脚本输入和ouptut文件进行比较,生成类似于
csv
格式的文件。我的意思是,它已经被解析成HTML了,而且所有的东西都排得很好。例如,在
awk
中仔细考虑一下,您可以像
href一样拆分行/记录=“
然后抓取所有数字,直到命中非数字。它只是觉得从原始HTML文件中可以更容易地使用适当的解析器进行提取。不过,你已经有了一个很好的下钻兔子洞的方法,所以额外的一点点可能不会太不合理。太好了,谢谢。如果重命名
页面
?例如,如果
页面
将是
7
,则替换为字符串
标题
?是否可以在一个命令中输入,或者我必须使用此输出?谢谢。@genderbee添加了
标题
嗨,工作很好,但是当你是2
|
时,它只能获得第一名。有没有办法获取html文档中的所有链接?仅获取
中的字符串。“
”。谢谢
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