使用Shell抓取网页特定数据,并进行文本处理

【原始需求】

公司用户手册是SGML的源码,其中文档中存在一些SQL语句,当前想验证这些SQL是否可拷贝执行。

【对策】

使用手工拷贝验证,太慢了。

于是想抓取相关内容,然后直接使用工具进行执行,人为检查执行结果即可。

经分析,源码部分一般使用<programlisting> </programlisting>和<synopsis></synopsis>标签进行约束,于是shell要抓取的具体内容针对这两个标签来进行。

记录思路如下:

1、先处理SQL中的注释(使用--进行注释 类似于C语言的#)

2、将文本去空格进行序列处理,使用如上标签进行分割,然后取分割后的偶数位置上的值(不解释)

3、通过第二步可以得到标签中的内容,需要对标签中的特殊字符进行处理

#!/bin/bash

path='/home/ckdu/sgml_qsruan/sgml'
for file in `ls /home/qs/sgml/*.sgml`
do
    cat ${file} |sed 's/&minus;/-/g'|awk -F'--' '{print $1}'> ${file}.tmp
    cat ${file}.tmp  | awk '{printf("%s",$0)}' |awk -F "(<programlisting>)|(</programlisting>)|(<synopsis>)|(</synopsis>)" '{for(i=2;i<NF;i+=2) print $i}'|sed 's/&gt;/>/g'|sed 's/<emphasis>//g'|sed 's/<\/emphasis>//g'|sed 's/&amp;&amp;/\&/g'|sed 's/&lt;/</g'|sed 's/<replaceable>//g'|sed 's/<\/replaceable>//g' |sed 's/<\/>//g'|sed 's/<literal>//g' > ${file}.sql
done

没有排格式,偷个懒。

转载于:https://www.cnblogs.com/skiz/p/8560184.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值