免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4310 | 回复: 16
打印 上一主题 下一主题

怎样快速删除超大文件中的行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-05 16:32 |只看该作者 |倒序浏览
我有一个文件大约有几百M,我想删除其中的一些行(这些行的行号我知道)请问我有什么好办法直接删除这些行。(我不想用grep、cat等再重定向的方法,因为这样太慢)

论坛徽章:
0
2 [报告]
发表于 2003-09-05 16:44 |只看该作者

怎样快速删除超大文件中的行

如果不重定向,怎么写文件呢?

论坛徽章:
0
3 [报告]
发表于 2003-09-05 16:54 |只看该作者

怎样快速删除超大文件中的行

  1. vim -e -s -c ":n,m,jd" -c ":wq" urfile
  2. 其中,n,m,j...代表不同的行号,d表示删除
复制代码
没有试过太大的文件

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-09-05 16:57 |只看该作者

怎样快速删除超大文件中的行

  1. #/bin/sh
  2. #filename:delanyline
  3. if [ $# -gt 2 ]
  4. then
  5. if [ -s $1 ];then
  6. ed -  $1<<!
  7. $2,$3d
  8. w
  9. q
  10. !
  11. fi
  12. else
  13.       echo Ussage:$0 filename startline endline
  14. fi
复制代码

论坛徽章:
0
5 [报告]
发表于 2003-09-05 17:13 |只看该作者

怎样快速删除超大文件中的行

请版主解释一下程序

论坛徽章:
0
6 [报告]
发表于 2003-09-05 17:16 |只看该作者

怎样快速删除超大文件中的行

bjgirl    我机器是AIX5.1,上面没有vim怎么办
admirer  ed是不是还要打开全部文件,会很慢么,还有我只知道要删除最后三行,但我不知道总行数,该怎么办

论坛徽章:
0
7 [报告]
发表于 2003-09-05 17:19 |只看该作者

怎样快速删除超大文件中的行

原帖由 "bjgirl" 发表:
vim -e -s -c ":n,m,jd" -c ":wq" urfile
其中,n,m,j...代表不同的行号,d表示删除
   

有BUG。。。

  1. $ more oldfile
  2.      1  # /etc/services:
  3.      2  # $Id: services,v 1.31 2002/04/03 16:53:20 notting Exp $
  4.      3  #
  5.      4  # Network services, Internet style
  6.      5  #
  7.      6  # Note that it is presently the policy of IANA to assign a single well-known
  8.      7  # port number for both TCP and UDP; hence, most entries here have two entries
  9.      8  # even if the protocol doesn't support UDP operations.
  10.      9  # Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
  11.     10  # are included, only the more common ones.
复制代码


$ vim -e -s -c ":2,4,6d" -c ":wq" oldfile  

  1. $ more oldfile
  2.      1  # /etc/services:
  3.      2  # $Id: services,v 1.31 2002/04/03 16:53:20 notting Exp $
  4.      3  #
  5.      7  # port number for both TCP and UDP; hence, most entries here have two entries
  6.      8  # even if the protocol doesn't support UDP operations.
  7.      9  # Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
  8.     10  # are included, only the more common ones.
复制代码




结果不一样啊。。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2003-09-05 17:27 |只看该作者

怎样快速删除超大文件中的行

[quote]原帖由 "yoof"]请版主解释一下程序[/quote 发表:
     
  1. ed -  $1<<!
  2. $2,$3d
  3. w
  4. q
  5. !
复制代码

删除第$2到$3行内容。
ed是unix的行编辑器,d删除,w保存,q推出。

论坛徽章:
0
9 [报告]
发表于 2003-09-05 17:32 |只看该作者

怎样快速删除超大文件中的行

原帖由 "yoursmile" 发表:



结果不一样啊。。
   

咋回事

论坛徽章:
0
10 [报告]
发表于 2003-09-05 17:34 |只看该作者

怎样快速删除超大文件中的行

我要删除指定的行该怎么写
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP