免费注册 查看新帖 |

Chinaunix

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

关于在文件中改写指定字符串的问题,谢谢大家,急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-15 14:55 |只看该作者 |正序浏览
大家好,
我想在一个文件中查找某个字符串,然后改写它:

例如: 在 aa.conf 中查找  timeout 60; 把 后面的60改为100 ,“timeout"
字符串在aa.conf中的位置时不定的,

aa.conf内容简写如下:

server name  aaa;
server ip  192.168.7.1;
...
timeout 60;
.....

请问我如何定位timeout,然后改写其后的值为100呢
fseek不好定位,fgets取出一部分后,在用strstr好像也不好使,fp的指针已经到了timeout的后面,
再说fgets每次取出多少合适呢,还是按行取出?
大家有什么好的方法

论坛徽章:
0
16 [报告]
发表于 2006-07-17 17:43 |只看该作者
原帖由 成长的企鹅 于 2006-7-15 14:55 发表
大家好,
我想在一个文件中查找某个字符串,然后改写它:

例如: 在 aa.conf 中查找  timeout 60; 把 后面的60改为100 ,“timeout"
字符串在aa.conf中的位置时不定的,

aa.conf内容简写如下:

s ...


用mmap到内存中直接改同步文件就行了.

论坛徽章:
0
15 [报告]
发表于 2006-07-17 17:39 |只看该作者
谢谢大家,我开始FH兄的方法了,呵呵

论坛徽章:
0
14 [报告]
发表于 2006-07-17 13:11 |只看该作者
原帖由 flw 于 2006-7-17 13:03 发表

二进制文件是最最最不值得提倡的一种方法,原因只有一个:扩展性太差了。


同意!原因还有一个,可读性太差,不易手工修改。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2006-07-17 13:09 |只看该作者
由于历史的原因,这种配置文件经常见到,但是它的表现力的确很一般。
相对来说,在这个新时代我更加建议使用 xml 或者是 yaml。

论坛徽章:
0
12 [报告]
发表于 2006-07-17 13:06 |只看该作者
好像有个c的lib,专门用来处理configure的文件的,,具体名字忘记了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2006-07-17 13:03 |只看该作者
原帖由 albcamus 于 2006-7-17 12:39 发表
FH兄的说法是正解, 另外, 如果可以把这个文件定义成一个一个struct的数据文件, 那么改写就比较容易。 找到之后fseek一下, 只写这个包含600的struct就可以了。

二进制文件是最最最不值得提倡的一种方法,原因只有一个:扩展性太差了。

论坛徽章:
0
10 [报告]
发表于 2006-07-17 12:39 |只看该作者
FH兄的说法是正解, 另外, 如果可以把这个文件定义成一个一个struct的数据文件, 那么改写就比较容易。 找到之后fseek一下, 只写这个包含600的struct就可以了。

论坛徽章:
0
9 [报告]
发表于 2006-07-17 11:06 |只看该作者
试试 sed 's/ timeout 60/ timeout 100/'   aa.conf   >result

论坛徽章:
0
8 [报告]
发表于 2006-07-16 17:46 |只看该作者
开始怀念注册表了,这样看起来注册表也不是一无是处呢。
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP