免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 18800375280
打印 上一主题 下一主题

[文本处理] 将文件的匹配行以及它的上下各3行填上注释 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
21 [报告]
发表于 2016-06-16 14:41 |只看该作者
Herowinter 发表于 2016-06-16 14:12
回复 16# 18800375280
前3行有没有可能出现xxoo,会的话有些代码要改一下的。
  1. perl -ne '{if(/xxoo/){@a[($.-4<0?0:$.-4)..($.+2)]=(1)x7}$b[$.-1]=$_}END{for(0..$#b){$a[$_]?print"#$b[$_]":print"$b[$_]"}}' f
复制代码
总感觉 xxoo 所在行上下文如果少于 3 行的独立空间的话, 这种编码意义不是很大, 倒不如干脆点 将每行的行首直接替换成 # 字符即可.

论坛徽章:
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
22 [报告]
发表于 2016-06-16 14:43 |只看该作者
回复 21# sunzhiguolu

我只是随便问一下,可以假设总存在上下3行,
awk代码应该没有任何问题的。
   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
23 [报告]
发表于 2016-06-16 15:02 |只看该作者
Herowinter 发表于 2016-06-16 14:43
回复 21# sunzhiguolu

我只是随便问一下,可以假设总存在上下3行,

假设的好, 说的有理 上楼已改正 多谢大神指点...

论坛徽章:
3
15-16赛季CBA联赛之北控
日期:2016-06-06 21:01:08程序设计版块每日发帖之星
日期:2016-06-19 06:20:00程序设计版块每日发帖之星
日期:2016-07-17 06:20:00
24 [报告]
发表于 2016-06-16 15:02 |只看该作者
回复 22# Herowinter


    不好意思,我忘记注明了,xxoo上下文总会存在3行,我的错

论坛徽章:
3
15-16赛季CBA联赛之北控
日期:2016-06-06 21:01:08程序设计版块每日发帖之星
日期:2016-06-19 06:20:00程序设计版块每日发帖之星
日期:2016-07-17 06:20:00
25 [报告]
发表于 2016-06-16 15:22 |只看该作者
回复 21# sunzhiguolu


    好使,perl大神666!

论坛徽章:
3
15-16赛季CBA联赛之北控
日期:2016-06-06 21:01:08程序设计版块每日发帖之星
日期:2016-06-19 06:20:00程序设计版块每日发帖之星
日期:2016-07-17 06:20:00
26 [报告]
发表于 2016-06-16 15:23 |只看该作者
回复 17# reyleon


    碉堡了

论坛徽章:
3
15-16赛季CBA联赛之北控
日期:2016-06-06 21:01:08程序设计版块每日发帖之星
日期:2016-06-19 06:20:00程序设计版块每日发帖之星
日期:2016-07-17 06:20:00
27 [报告]
发表于 2016-06-16 16:40 |只看该作者
回复 19# moperyblue


    把模式空间的多行中,行首是^,行尾是$, 等价于非多行模式的\n(相对^).*\n(相当于\$)。

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
28 [报告]
发表于 2016-06-16 17:23 |只看该作者
  1. sed -nr '/xxoo/{x;s/(.*\n)(.*\n)(.*\n)(.*)/\1#\2#\3#\4/p;g;N;N;N;s/(.*\n)(.*\n)(.*\n)(.*)/#\1#\2#\3#\4/p;n;h;d;};H;${g;p}'
复制代码
回复 1# 18800375280


   

论坛徽章:
3
15-16赛季CBA联赛之北控
日期:2016-06-06 21:01:08程序设计版块每日发帖之星
日期:2016-06-19 06:20:00程序设计版块每日发帖之星
日期:2016-07-17 06:20:00
29 [报告]
发表于 2016-06-16 19:30 |只看该作者
回复 28# liion631818


    辛苦了,写了这么长的代码,有一点小bug就是文件第一行多出来一个空行

论坛徽章:
9
操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-17 17:50:32操作系统版块每日发帖之星
日期:2016-08-01 06:20:0015-16赛季CBA联赛之广东
日期:2016-08-01 16:01:57操作系统版块每日发帖之星
日期:2016-08-04 06:20:00IT运维版块每日发帖之星
日期:2016-08-07 06:20:00操作系统版块每日发帖之星
日期:2016-08-07 06:20:0015-16赛季CBA联赛之福建
日期:2017-03-07 17:14:27
30 [报告]
发表于 2016-06-20 14:15 |只看该作者
本帖最后由 Riet 于 2016-06-20 14:17 编辑

话说这样可以么

grep -A3 -B3 "xxoo" file | sed -r s"/(\S+)/#\1/"

好像 需求理解错了,以为只要注释。忽略吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP