Bash,sed,从html的行中获取2个特定字符串,存储为csv
问题 我解析了html文件,下面是结果示例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
...
<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>
...
我试过就是为了这个数字
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