Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3024122
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-10-19 00:46:28

  1. sed -n ':a;1,5!{P;N;D;};N;ba' file
[解析]
这是删除文件末尾5行,原理是把第1到5行读入pattern space中,当读到第5行,超过了1,5的范畴后会执行花括号里的语句,就打印模式空间的第1行,然后再读取下一行内容,删除模式空间的第一行,并跳转到命令行首继续执行。这样就相当于隔5行打印前面的内容,最后的5行无法打印。



  1. awk 'NR>5{print a[NR%5]}{a[NR%5]=$0}' file
[解析]
同样的精彩,把前5行内容按取模为下标存入数组,当第6行时,打印第一行内容,也是隔5行打印,最后的打印不出来就等于是删除了。



  1. awk 'BEGIN{while(getline<"file")i++}NR<=(i-5)' file

  2. awk 'BEGIN{CMD="wc -l file";CMD|getline i}NR<=(i-5)' file
[解析]
在BEGIN模块中,统计本文行数,然后最后5行不打印。

阅读(2561) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~