免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7244 | 回复: 12
打印 上一主题 下一主题

[文本处理] Linux使用GREP,awk删除指定行及上下几行,求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-18 17:13 |只看该作者 |倒序浏览
  1. <url>
  2.     <loc>http://www.ucat.cc/index.php?ctl=register</loc>
  3.     <lastmod>2013-11-18</lastmod>
  4.     <changefreq>always</changefreq>
  5.     <priority>0.9</priority>
  6.   </url>
  7.   <url>
  8.     <loc>http://www.ucat.cc/index.php?ctl=login</loc>
  9.     <lastmod>2013-11-18</lastmod>
  10.     <changefreq>always</changefreq>
  11.     <priority>0.9</priority>
  12.   </url>
  13.   <url>
  14.     <loc>http://www.ucat.cc/tenders/</loc>
  15.     <lastmod>2013-11-18</lastmod>
  16.     <changefreq>always</changefreq>
  17.     <priority>0.8</priority>
  18.   </url>
  19.   <url>
  20.     <loc>http://www.ucat.cc/systemContent/main/1.html</loc>
  21.     <lastmod>2013-11-18</lastmod>
  22.     <changefreq>always</changefreq>
  23.     <priority>0.9</priority>
  24.   </url>
  25.   <url>
  26.     <loc>http://www.ucat.cc/case/</loc>
  27.     <lastmod>2013-11-18</lastmod>
  28.     <changefreq>always</changefreq>
  29.     <priority>0.8</priority>
  30.   </url>
  31.   <url>
  32.     <loc>http://www.ucat.cc/home/</loc>
  33.     <lastmod>2013-11-18</lastmod>
  34.     <changefreq>always</changefreq>
  35.     <priority>0.8</priority>
  36.   </url>
  37.   <url>
  38.     <loc>http://www.ucat.cc/javascript:AddFavorite();</loc>
  39.     <lastmod>2013-11-18</lastmod>
  40.     <changefreq>always</changefreq>
  41.     <priority>0.9</priority>
  42.   </url>
  43.   <url>
  44.     <loc>http://www.ucat.cc/tenders/javascript:AddFavorite();</loc>
  45.     <lastmod>2013-11-18</lastmod>
  46.     <changefreq>always</changefreq>
  47.     <priority>0.7</priority>
  48.   </url>
复制代码
这样的段落怎样才能删掉包含javascript的段落,意思是所有包含javascript的行,及上1行下4行都不要

我用grep -i -B1 -A4 "javascript" index.html

这样可以提取出不需要的行,但是我需要的是另外的部分,于是我用
grep -iv -B1 -A4 "javascript" index.html>sitemap1.xml.new

结果返回的和原文件一摸一样啊。

应该怎么写呢???

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2013-11-18 17:21 |只看该作者
回复 1# kericw

Try this one
$ awk -vRS="</url>\n" '!/javascript:/{print $0"</url>"}' FILE
   

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
3 [报告]
发表于 2013-11-18 17:31 |只看该作者
  1. awk -v RS='' '$2!~/javascript/{print $0"\n"}'
复制代码
试试行不

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2013-11-18 17:35 |只看该作者
  1. sed '/<url>/{:1;N;/<\/url>/!b1;/javascript/d}'
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
5 [报告]
发表于 2013-11-18 17:38 |只看该作者
回复 3# LikeLx
你这个RS定义得毫无意义~

   

论坛徽章:
0
6 [报告]
发表于 2013-11-18 17:39 |只看该作者
回复 2# jason680


    可以哎,真厉害,怎么学的啊?

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
7 [报告]
发表于 2013-11-18 17:42 |只看该作者
回复 5# yestreenstars
大神,我这不用RS定义结果不对啊。

   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
8 [报告]
发表于 2013-11-18 17:43 |只看该作者
回复 3# LikeLx


    能否把你的测试数据和测试结果贴出来看看

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
9 [报告]
发表于 2013-11-18 17:44 |只看该作者
grep -iv -B1 -A4 "javascript" index.html>sitemap1.xml.new的意思
应该是把index.html中不包含javascript的行,及该行前1行后4行写入新文件
像<lastmod>2013-11-18</lastmod>不包含javascript,
他的前一行<loc>http://www.ucat.cc/javascript:AddFavorite();</loc>也会写入,
所以新文件和原文件一样。

建议楼主用sed或awk,参考上面几位大大的代码,特别是你前后可能不一定是1行或4行。

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
10 [报告]
发表于 2013-11-18 17:46 |只看该作者
  1. [root@dbserver ~]# cat a.txt
  2. <url>
  3.     <loc>http://www.ucat.cc/index.php?ctl=register</loc>
  4.     <lastmod>2013-11-18</lastmod>
  5.     <changefreq>always</changefreq>
  6.     <priority>0.9</priority>
  7.   </url>

  8.   <url>
  9.     <loc>http://www.ucat.cc/index.php?ctl=login</loc>
  10.     <lastmod>2013-11-18</lastmod>
  11.     <changefreq>always</changefreq>
  12.     <priority>0.9</priority>
  13.   </url>

  14.   <url>
  15.     <loc>http://www.ucat.cc/tenders/</loc>
  16.     <lastmod>2013-11-18</lastmod>
  17.     <changefreq>always</changefreq>
  18.     <priority>0.8</priority>
  19.   </url>

  20.   <url>
  21.     <loc>http://www.ucat.cc/systemContent/main/1.html</loc>
  22.     <lastmod>2013-11-18</lastmod>
  23.     <changefreq>always</changefreq>
  24.     <priority>0.9</priority>
  25.   </url>

  26.   <url>
  27.     <loc>http://www.ucat.cc/case/</loc>
  28.     <lastmod>2013-11-18</lastmod>
  29.     <changefreq>always</changefreq>
  30.     <priority>0.8</priority>
  31.   </url>

  32.   <url>
  33.     <loc>http://www.ucat.cc/home/</loc>
  34.     <lastmod>2013-11-18</lastmod>
  35.     <changefreq>always</changefreq>
  36.     <priority>0.8</priority>
  37.   </url>

  38.   <url>
  39.     <loc>http://www.ucat.cc/javascript:AddFavorite();</loc>
  40.     <lastmod>2013-11-18</lastmod>
  41.     <changefreq>always</changefreq>
  42.     <priority>0.9</priority>
  43.   </url>

  44.   <url>
  45.     <loc>http://www.ucat.cc/tenders/javascript:AddFavorite();</loc>
  46.     <lastmod>2013-11-18</lastmod>
  47.     <changefreq>always</changefreq>
  48.     <priority>0.7</priority>
  49.   </url>
复制代码
回复 8# Shell_HAT

这是我的测试数据
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP