【原始需求】
公司用户手册是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/−/-/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/>/>/g'|sed 's/<emphasis>//g'|sed 's/</emphasis>//g'|sed 's/&&/&/g'|sed 's/</</g'|sed 's/<replaceable>//g'|sed 's/</replaceable>//g' |sed 's/</>//g'|sed 's/<literal>//g' > ${file}.sql done
没有排格式,偷个懒。