24小时热门版块排行榜    

CyRhmU.jpeg
查看: 980  |  回复: 5

ter20

铁杆木虫 (正式写手)

[交流] 【求助】结果文件中字符串的搜索程序已有5人参与

高斯计算得到的log文件,只想要期中的能量,即结尾“HF=****”那一行,文件比较多,想写个程序自动读取这一行再输出到一个新的文本文件中,因为是新手,所以不知道具体的算法该如何实现,希望高手能够指点一二,谢谢
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

ter20(金币+1):谢谢,只是不知道比较好的字符串匹配方法,一行一行地匹配吗? 2010-07-05 14:46:45
这个如果是用shell脚本的比较简单,直接用grep匹配你需要的行,然后将结果输出到新的文件就行了。如果大量的文件的话,用shell也比较方便。

如果是写程序的话,思路也差不多,打开一个文件读,然后匹配你需要的行,找到后输出到新的文件。多个文件的话,可以把文件名做成一个数组,或者专门用一个文件来存文件名。
2楼2010-07-05 13:25:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ter20

铁杆木虫 (正式写手)

因为我要的HF=****就在高斯结果文件的最后,所以我想知道当我读文件时把读取位置移到文件结尾,能不能从文件结尾向文件开头搜索?
3楼2010-07-05 14:50:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)


ter20(金币+1):好的,我试试,谢谢啦 2010-07-05 15:24:03
余泽成(金币+1):谢谢参与应助! 2010-07-05 19:06:14
引用回帖:
Originally posted by ter20 at 2010-07-05 14:50:59:
因为我要的HF=****就在高斯结果文件的最后,所以我想知道当我读文件时把读取位置移到文件结尾,能不能从文件结尾向文件开头搜索?

程序读文件还是很快的,你从头到尾一行行地读文件,直到读出所需的字符串就可以了。
4楼2010-07-05 14:57:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


ter20(金币+1):谢谢你的建议啊,的确是会出现这种问题,我再试试 2010-07-05 20:41:43
nono2009(金币+1):鼓励应助。 2010-07-06 09:30:46
你读 gaussian 中最后的那部分内容中的 HF 其实还是比较麻烦的,因为 H 和 F 有可能分在两行,或者 HF 后面的数据被分在两行,所以,匹配字符串还真不是很好做的……

如果不强求最后的 HF,你可以在 .log 文件中找到那个数值,呵呵,那个肯定是在一行中的
5楼2010-07-05 20:38:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
nono2009(金币+2):鼓励应助。 2010-07-06 09:30:25
我记得去年有人求助过这样的问题。
我觉得
1、直接用perl,先抽取后面部分的文件,然后再多行匹配。
2、自己试着看看能不能把gaussion输出结果的那个函数修改一下,让再输出HF前后都多输出一个换行符,就让这个HF=xx再单独的一行(我对gaussion不了解,不知道现在是不是完全不提供源码)
3、如果要蛮干,可以试试用C吧,其实C干这样不复杂的事情还是很容易的,其实也不是大家想的那么麻烦。反正总共就那么几种情况。

对于1,3都得先fseek把文件指针移在后面,比如倒数1K个字符处,这样后来的内容反正就那么100多行,也花不了多少时间去分析的
引用回帖:
Originally posted by snoopyzhao at 2010-07-05 20:38:47:
你读 gaussian 中最后的那部分内容中的 HF 其实还是比较麻烦的,因为 H 和 F 有可能分在两行,或者 HF 后面的数据被分在两行,所以,匹配字符串还真不是很好做的……

如果不强求最后的 HF,你可以在 .log 文件 ...

6楼2010-07-05 23:15:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ter20 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见