LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1355|回复: 8

怎么删除一行后并保存为原文件?

[复制链接]
发表于 2009-10-2 15:26:28 | 显示全部楼层 |阅读模式
一行命令能搞定的那种。
在用sed时最后就直接将原文件内容清空了
发表于 2009-10-2 16:14:02 | 显示全部楼层
sed -i -e 'n d' filename

n 是行号, filename 是文件名
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-2 18:27:57 | 显示全部楼层
sed的-i参数,搞定了,谢谢大侠
那要删除倒数两行怎么写那个n
回复 支持 反对

使用道具 举报

发表于 2009-10-5 18:57:41 | 显示全部楼层
sed -n -e :a -e '1,2!{P;N;D;};N;ba'

这样可以, 我这是抄来的我自己的法子是用tac掉个头, 然后就能删掉最后2行了.  那位高手能给说说上面那个命令sed -n -e :a -e '1,2!{P;N;D;};N;ba'
看不太明白
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-5 23:12:42 | 显示全部楼层
sed 'N;$!P;$!D;$d'
这个也行,不过没看懂,搞不懂N是什么作用
回复 支持 反对

使用道具 举报

发表于 2009-10-6 10:52:20 | 显示全部楼层
sed -i -e '$ d; N; $ d'
也是可以,但是这个方法不够通用。删除倒数 k 行就不知道如何做了,继续关注。
回复 支持 反对

使用道具 举报

发表于 2009-10-30 12:41:01 | 显示全部楼层
head -n -n filename
第二个 n 是倒数行数
  1. root [ ~ ]0# head -n -2 -
  2. 1
  3. 2
  4. 3
  5. last
  6. ^d
  7. 1
  8. 2
  9. root [ ~ ]0#
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-10-30 17:47:32 | 显示全部楼层
最后一行就比较简单了, 如果要最后N行稍为麻烦些



  1. huan@nb:~$ seq 1 3 > foo
  2. huan@nb:~$ perl -ni -e ' print unless eof ' foo
  3. huan@nb:~$ cat foo
  4. 1
  5. 2
  6. huan@nb:~$ sed -i '$d' foo
  7. huan@nb:~$ cat foo
  8. 1
  9. huan@nb:~$
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-10-30 19:11:45 | 显示全部楼层
sed -i '$d' file
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表