需求场景:【Shell脚本将普通文件转成xml格式文件】公司某个站点删除大量稿件,但是这些稿件已经被百度收录,这样用户访问将会出现404,用户体验不太好,所以需要将删除的稿件生成为xml格式文件,并且每个文件为5000条数据,然后提交至百度进行收录删除 。
普通文件:https://www.abc.com/html/ys/13003183/20191115/123456.html
https://www.abc.com/html/ys/13003183/20191115/123765.html
https://www.abc.com/html/ys/13003183/20191115/567567.html
https://www.abc.com/html/ys/13003183/20191115/456456.html
https://www.abc.com/html/ys/13003183/20191115/374456.html
https://www.abc.com/html/ys/13003183/20191115/37456645.html
xml格式文件:<urlset>
<url> <loc> https://www.abc.com/html/ys/13003183/20191115/37404973.html </loc> </url>
<url> <loc> https://www.abc.com/html/jb/13003184/20191115/37404988.html </loc> </url>
<url> <loc> https://www.abc.com/html/jb/13003184/20191115/37404968.html </loc> </url>
<url> <loc> https://www.abc.com/ylaq/13003182/20191115/37404860.html </loc> </url>
<url> <loc> https://www.abc.com/ylaq/13003182/20191115/37404861.html </loc> </url>
</urlset>
脚本信息:cat xml.sh#!/bin/bash#sed -i 's/^/<url> <loc> /g' $1sed -i 's/$/ </loc> </url>/g' $1name=`echo $1 | awk -F"." '{print $1}'`echo $namesplit -l 5000 $1 ${name}_xmlfor filename in `find ./ -name "${name}_xml*"`do sed -i '1 i\<urlset>' $filename echo "</urlset>" >> $filename mv $filename ${filename}.xmldone执行:sh xml.sh 文件名称
脚本讲解:
- 脚本使用sed对行首和行尾添加字段;
- 定义变量去掉文件后缀名称;
- 使用split对文件进行分割;
- 使用for循环对分割后的文件进行添加xml首部和尾部字段,然后进行重命名;
推荐阅读
- 轻松使用Shell脚本监控WEB服务是否正常
- 枣庄|又一位80后名将告别 盘点巨头时代的三位挑战者 哪位让你最惋惜
- 两岸茶人25日将齐聚武夷山茶节论道
- 稀土检测标准将提高 6成闽茶受影响
- 福安,今年油茶产值将达到1700余万元
- 四川,雅安将斥资建设国家级茶叶检验中心
- 农业部,杀虫剂硫丹将禁止用于茶叶种植业
- Linux怎么关机
- 南方佳木将入驻中石化万余家便利店
- 日照,十二五茶业总产值将达12亿元