免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3711 | 回复: 13

如何高效添加内容到大文件的开头? [复制链接]

论坛徽章:
0
发表于 2006-09-13 19:32 |显示全部楼层
RT,一个大文件,添加到末尾,可以用echo ada>>filename,速度比较快,但是用vi打开很慢,
但是如何快速添加到文件的开头?

论坛徽章:
4
技术图书徽章
日期:2013-09-23 10:22:37狮子座
日期:2013-10-15 23:31:54卯兔
日期:2013-11-11 17:33:15金牛座
日期:2013-11-15 17:25:28
发表于 2006-09-13 19:37 |显示全部楼层
sed -i '$a ada' filename试试

论坛徽章:
0
发表于 2006-09-13 22:27 |显示全部楼层
原帖由 nbrr 于 2006-9-13 19:37 发表
sed -i '$a ada' filename试试

不快,跟>>的速度没法比

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2006-09-14 10:43 |显示全部楼层

  1. echo string|cat - urfile >newfile
复制代码

from ABS

论坛徽章:
0
发表于 2006-09-14 10:47 |显示全部楼层
shell语法比较生涩,但是我的思路是把第一行替换为你的新的行目加上原来的第一行。

这种速度应该比较快。


如果依然效率不高,那么可能是unix文件系统的空间分配问题。

各位兄台认为呢?

论坛徽章:
0
发表于 2006-09-14 11:17 |显示全部楼层
这个命令没有用过,期待着高手答复!

论坛徽章:
0
发表于 2006-09-14 11:41 |显示全部楼层
原帖由 寂寞烈火 于 2006-9-14 10:43 发表

  1. echo string|cat - urfile >newfile
复制代码

from ABS



这个得新建一个newfile吧,要是大得话,还是很慢吧。

论坛徽章:
0
发表于 2006-09-14 13:21 |显示全部楼层
seek后truncate就可以了:


  1. #! /usr/bin/perl
  2. $file="$ARGV[0]";
  3. $line="$ARGV[1]\n";
  4. open(FH, "+<$file") or die "Opening: $!";
  5. my @ARRAY = <FH>;
  6. seek(FH,0,0) or die "Seeking: $!";
  7. print FH $line;
  8. print FH @ARRAY or die "Printing: $!";
  9. truncate(FH,tell(FH)) or die "Truncating: $!";
  10. close(FH);
复制代码


运行:
./perlprogram file TheContentUwantToAdd

论坛徽章:
0
发表于 2006-09-14 15:26 |显示全部楼层

回复 1楼 lifeistrue 的帖子

加一行string到开头
sed -i '1s/^\(.*\)$/string\n\1/' urfile

[ 本帖最后由 chzht001 于 2006-9-14 15:27 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2006-09-14 16:17 |显示全部楼层
原帖由 寂寞烈火 于 2006-9-14 10:43 发表

  1. echo |cat - urfile >newfile
复制代码

from ABS
  1. { echo string;cat ur-file;} >newfile
复制代码

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP