LinuxSir.cn,穿越时空的Linuxsir!

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

有没有方法有效的删除文件中的某一行内容?

[复制链接]
发表于 2008-1-13 15:33:34 | 显示全部楼层 |阅读模式
文件的内容是一行一行的文本
如想删除任一行,后面的文本向前移

或者,如何更改本行的内容,使得用fgets()函数的时候,即使fp指向当前行,而获得的字符串是下一行的???

谢谢
发表于 2008-1-13 17:31:22 | 显示全部楼层
如果你的文件不是很大,有个简单的方法。

循环读取文件的每行,除了你所要删除的那行,存入足够大的buffer,然后把buffer写入该文件

^_^
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-13 22:09:20 | 显示全部楼层
恩,谢谢
我就是这样实现了
我看还有人告诉我用sed, 不知道这个效率怎么样?
回复 支持 反对

使用道具 举报

发表于 2008-1-14 21:59:37 | 显示全部楼层
用sed很快,
只需要一行代码就行了,
我也是刚开始学脚本语言,
也不知道我写得好不好,
贴出来给你看一下。
e.g.
$ sed /'pattern'/d input_file > outtput_fle

'pattern' 是你要删除的那一行里的特征字符。
input_file 是你的文件
output_file 是你的结果文件。

如:
input_file如下:
#include <stdio.h>
int main()
{
printf("Hello world~");
return 0;
}

当你执行:sed /'main'/d input_file > output_file 之后。
output_file 为:
#include <stdio.h>
{
printf("Hello world~");
return 0;
}
回复 支持 反对

使用道具 举报

发表于 2008-1-23 03:00:51 | 显示全部楼层
grep也能做到这个:
grep -v main inputfile > outputfile
回复 支持 反对

使用道具 举报

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

本版积分规则

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