- sed -n ':a;1,5!{P;N;D;};N;ba' file
[解析]
这是删除文件末尾5行,原理是把第1到5行读入pattern space中,当读到第5行,超过了1,5的范畴后会执行花括号里的语句,就打印模式空间的第1行,然后再读取下一行内容,删除模式空间的第一行,并跳转到命令行首继续执行。这样就相当于隔5行打印前面的内容,最后的5行无法打印。
- awk 'NR>5{print a[NR%5]}{a[NR%5]=$0}' file
[解析]
同样的精彩,把前5行内容按取模为下标存入数组,当第6行时,打印第一行内容,也是隔5行打印,最后的打印不出来就等于是删除了。
- awk 'BEGIN{while(getline<"file")i++}NR<=(i-5)' file
-
awk 'BEGIN{CMD="wc -l file";CMD|getline i}NR<=(i-5)' file
[解析]
在BEGIN模块中,统计本文行数,然后最后5行不打印。
阅读(877) | 评论(0) | 转发(0) |