shell删除包含某个字符串的上下几行

2 篇文章 0 订阅
1 篇文章 0 订阅

今天在工作中遇到了一个问题,因为网站有些链接已经是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
里面是需要删除的关键词


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个关键词分散在不同的文件中,这样能大大节省手动删除的时间了。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值