Chinaunix

标题: sed删除指定行 [打印本页]

作者: nxlinux    时间: 2010-05-06 19:00
标题: sed删除指定行
我想删除倒数第二行,怎么用sed写?
作者: where27    时间: 2010-05-06 19:29
回复 1# nxlinux
  1. sed 'N;$!P;D' file
复制代码

作者: bbgg1983    时间: 2010-05-06 19:31
试试
  1. tac file|sed 2d|tac
复制代码

作者: where27    时间: 2010-05-06 19:32
回复 3# bbgg1983


    呵呵,好想法
作者: bbgg1983    时间: 2010-05-06 19:35
回复 4# where27

效率比较低,还是你那个好
作者: where27    时间: 2010-05-06 19:35
回复 5# bbgg1983


    能抓到老鼠的就是好猫
作者: nxlinux    时间: 2010-05-06 19:44
回复 2# where27


    N不是下一行的意思吗,这句话如何理解,大哥
作者: expert1    时间: 2010-05-06 19:45
sed '$d;$d'
作者: where27    时间: 2010-05-06 20:03
本帖最后由 where27 于 2010-05-06 20:06 编辑

回复 7# nxlinux


    N是附加下一行到模式空间,P打印第一个\n前的内容,D删除第一个\n前的内容,因为当最后一行附加到了模式空间以后,第一个\n前的内容就是倒数第二行了,这个时候!P,也就是不打印倒数第二行
作者: Shell_HAT    时间: 2010-05-06 21:38
回复 8# expert1


结果有误:
#cat urfile
1
2
3
4
5
#sed '$d;$d' urfile
1
2
3
4

作者: nxlinux    时间: 2010-05-07 18:03
回复 9# where27


    非常感谢,看来我得好好学习下sed的N,P,D了,模式空间我咋感觉那么抽象!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2