Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1647378
  • 博文数量: 409
  • 博客积分: 6240
  • 博客等级: 准将
  • 技术积分: 4908
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-01 00:04
文章分类

全部博文(409)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(13)

2015年(22)

2013年(4)

2012年(240)

2011年(127)

分类:

2011-10-20 13:31:31

原文地址:sed之删除文件末尾的行 作者:zooyo

  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行不打印。

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