如何在MATLAB中更改特定字符串前面的数字

时间:2013-11-27 12:15:16

标签: linux matlab

我有像

这样的输入
start of data

R    34
P    35.12
Pressure Ratio
END
在file1中的

我有单值39,我想分配给R 在file2中,我有单值32.79,我想指定P

作为最后一步,在最后一行END之前,我想输入Radius Ratio

这样我的输出就是

R    39
P    32.79
Pressure Ratio
Radius Ratio
END

第1部分在linux中通过

解决
sed '/\<R\>/!d;=;s/.* \([^ ]\+\).*/\1/;R File1.txt' inputFile.txt |
sed 'N;N;s|\n|s/|;s|\n|/|;s|$|/|;q' >temp.sed
sed -i -f temp.sed inputFile.txt
etc

第2部分在linux中通过

解决
sed  -i -e '/*END/i \Radius Ratio ' inputFile.txt

任何人都可以在MATLAB中采用更聪明的方式吗?

问候

1 个答案:

答案 0 :(得分:0)

为什么不在MATLAB中使用像字符串替换这样简单的东西,在那里你仍然可以使用正则表达式?我知道它不是最优雅的,但它会完成工作。

text = fileread('someFile.txt');
num = 100;
text = regexprep(text,'R[ ]+[0-9.]+[ ]*',['R ',num2str(num)]);
text = regexprep(text,'P[ ]+[0-9.]+[ ]*',['P ',num2str(num)]);
text = regexprep(text,'END','someString \nEND ')

<强>更新

然后将此信息写回同一文件或不同的文件名,只需执行以下操作

f = fopen('someFile.txt','w');
fprintf(f,text);
fclose(f);