版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanierming/article/details/78088158
今天在工作中遇到了一个问题,因为网站有些链接已经是404了,所以需要从sitemap文件中去除。
但是sitemap文件有很多,而且被删除的 URL中关键词 也会有很多,删除的还是含有关键词行的上下多行。
#!/bin/sh
for s in `cat sitemaplist.txt`;do #sitemap文件列表
for k in `cat keywords.txt`;do #要删除的关键词列表
lines=`sed -n "/$k/=" $s | sort -r`; #找出匹配的行,倒序排序
for i in $lines; #循环要删除的行进行删除
do
let startLine="$i-1" #开始行
lineAfter=5 #要删除之后多少行
let endLine="startLine + lineAfter" #统计需要从多少行删到多少行
sed -i $startLine','$endLine'd' $s #删除
done
done
done
sitemaplist.txt文件示例:
test.xml
test1.xml
里面是sitemap的文件列表。
keywords.txt文件示例:
guangzhou
beijing
里面是需要删除的关键词
扫描二维码关注公众号,回复:
3780149 查看本文章
sitemap文件示例:
<?xml version="1.0" encoding="utf-8" ?>
<urlset>
<url>
<loc>http://m.xxxx.com/shanghai/xxxxxx</loc>
<lastmod>2017-06-12 17:33:16</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://m.xxxx.com/beijing/xxxxxx</loc>
<lastmod>2017-06-12 17:33:16</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://m.xxxx.com/guangzhou/xxxxxx</loc>
<lastmod>2017-06-12 17:33:16</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://m.xxxxx.com/nanjing/xxxxxxx</loc>
<lastmod>2017-06-12 17:33:16</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
里面是已经有的sitemap文件。
那么这个脚本能有多省事呢?我们一共有几百个sitemap的文件,每个文件大约有5M,18W行,大约3W个URL,每个URL占5行。而且可能会有N个关键词分散在不同的文件中,这样能大大节省手动删除的时间了。