免费注册 查看新帖 |

Chinaunix

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

[学习共享] 删除匹配行和之后两行,怎么写?
 [复制链接]

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-14 12:26 |只看该作者 |正序浏览

删除匹配行和之后两行,怎么写?


$sed '/Storage/,+2d' a.txt  执行不了。

sed: -e expression #1, char 18: Unexpected ','

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
20 [报告]
发表于 2016-01-06 23:57 |只看该作者
  1. [root@07 ~]# seq 5 |sed '/2/,+2d'  
  2. 1
  3. 5
复制代码
可以呀,你的为啥不行

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
19 [报告]
发表于 2016-01-06 23:25 |只看该作者
回复 18# songyc_2015


    感谢你的耐心回复,生活愉快!

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
18 [报告]
发表于 2016-01-06 23:00 |只看该作者
本帖最后由 songyc_2015 于 2016-01-06 23:01 编辑

回复 17# johnson0418
  1. awk -vs="${DT}" '$0~s,0{next}1' aa.log
复制代码

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
17 [报告]
发表于 2016-01-06 22:54 |只看该作者
回复 16# songyc_2015


    谢谢!
    DT=`date +'%b %d'`
    awk ‘/$DT/,0{next}1' aa.log         中间的变量要加什么符号?

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
16 [报告]
发表于 2016-01-06 22:43 |只看该作者
回复 15# johnson0418
  1. (tcp)~/priv/syc> cat file
  2. bbbbbbb
  3. Storage/abc/def/aaaaaaaaaaaaaaaaaaaa
  4. cccccccc
  5. dddddddddd
  6. eeeeeeeeeee
  7. ffffffffffff
  8. (tcp)~/priv/syc> awk '/Storage\/abc\/def/' file
  9. Storage/abc/def/aaaaaaaaaaaaaaaaaaaa
  10. (tcp)~/priv/syc> awk -vs="Storage/abc/def" '$0~s' file                  
  11. Storage/abc/def/aaaaaaaaaaaaaaaaaaaa
复制代码

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
15 [报告]
发表于 2016-01-06 21:28 |只看该作者
回复 11# songyc_2015


    谢谢你!
    如果遇到路径或变量的要加什么符号,试不出来

比如:我要查找的是Storage/abc/def这一段,或是 变量$DT,要加什么符号?

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
14 [报告]
发表于 2016-01-06 17:51 |只看该作者
soga! 之前我以为条件小于0就不执行{next}
回复 13# songyc_2015


   

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
13 [报告]
发表于 2016-01-06 13:34 |只看该作者
回复 12# 南武水寿
  1. (tcp)~/priv/syc> nl file
  2.      1  aaaaaa
  3.      2  bbbbbbb
  4.      3  cccccccc
  5.      4  dddddddddd
  6.      5  eeeeeeeeeee
  7.      6  ffffffffffff
  8. (tcp)~/priv/syc> awk '/aaa/{n=3}n--{next}1' file   
  9. dddddddddd
复制代码
n--{next}等价于if(n--){next},即n先做判断,再自己减一,在awk里,0为false,非0为true
awk读取第1行【aaaaaa】时,n=3不为0,则会执行next
awk读取第2行【bbbbbbb】时,n=2不为0,则会执行next
awk读取第3行【cccccccc】时,n=1不为0,则会执行next
awk读取第4行【dddddddddd】时,n=0为0,则不会执行next,而执行后面的1,这里的1等价于if(1){print $0},即输出dddddddddd
awk读取第5行【eeeeeeeeeee】时,n=-1不为0,则会执行next
awk读取第5行【ffffffffffff】时,n=-2不为0,则会执行next,
awk结束退出。

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
12 [报告]
发表于 2016-01-06 09:55 |只看该作者
awk '/Storage/{n=3}n-->0{next}1' file   如果把条件n-->0  改成 n-- , 即程序为awk '/Storage/{n=3}n--{next}1' file时, 为什么只打印匹配行后面的第三行,余下的都不打印?
没想明白
回复 3# songyc_2015


   
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP