【问题标题】:how to change numbers in front of a specific string in MATLAB如何在MATLAB中更改特定字符串前面的数字
【发布时间】:2013-11-27 12:15:15
【问题描述】:

我有一个类似的输入

start of data

R    34
P    35.12
Pressure Ratio
END

在 file1 我有一个值 39,我想分配给 R 在 file2 我有一个值 32.79 我想分配 P

作为最后一步,在最后一行END之前,我想输入半径比

这样我的输出就是

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 中引领更智能的方式吗?

问候

【问题讨论】:

  • 我怀疑有什么比sed 更紧凑或更快。在 MATLAB 中执行此操作只需要编写 sed 类似的东西或更紧凑但仅限于一个用例的东西。
  • 是的,我知道问题是我没有在 linux 上安装我的程序,所以我必须使用 MATLAB

标签: linux matlab


【解决方案1】:

为什么不在 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);

【讨论】:

  • 很好。但是它在文件中没有改变。如何将输出传输回同一个文件?有什么建议吗?
猜你喜欢
  • 2018-10-07
  • 2016-01-08
  • 2019-09-29
  • 1970-01-01
  • 2014-09-28
  • 2020-01-20
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
相关资源
最近更新 更多