matlab 或 C++提取文本含特定字符行数据

如题,比如文件名为runlog,无后缀名。内容如下:|Hostname:123||DATA:07/02/14||deletenumber64307attime1numbe... 如题,
比如文件名为runlog,无后缀名。内容如下:
| Hostname : 123 |
| DATA : 07/02/14 |
|

delete number 64307 at time1
number 54307 at time1
delete number 63307 at time2
number 54387 at time3
delete number 128347 at time4



我需要将含有字符‘delete number’所有行中‘delete number’后面的数字提取出来,其他内容舍弃。然后在文本首末行加上特定字符,提取出的数字前加上’create,‘,最后得到的如下:
abc
def
create,64307

create,63307
create,128347
ghj
qwe

将提取出的内容生成新的reslut.dat文件。
最好用matlab ,能加上GUI界面
可发我邮箱:yeyuhan2013@163.com
展开
 我来答
tianxiawulang
2015-10-28 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2585万
展开全部

参考代码:

[f,p] = uigetfile('*.*','选择输入文件','runlog');
if f==0, return, end
file = [p f];
fi = fopen(file, 'rt');
if fi == -1
    error(['无法打开文件 ' file])
end
fo = fopen('reslut.dat', 'wt');
if fo == -1
    error(['无法打开文件 reslut.dat'])
end
fprintf(fo,'abc\ndef\n');
ptn = 'delete  number';
while ~feof(fi)
    s = fgetl(fi);
    inx = findstr(s, ptn);
    if isempty(inx), continue, end
    d = sscanf(s(inx(1)+length(ptn)+1:end),'%d');
    fprintf(fo,'create,%i\n',d);
end
fprintf(fo,'ghj\nqwe\n');
fclose(fi);
fclose(fo);
小志8554
2015-10-28 · TA获得超过1058个赞
知道小有建树答主
回答量:1198
采纳率:25%
帮助的人:304万
展开全部
搞得这么复杂。。。linux下面一条命令就搞定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式