gpt4 book ai didi

sed - 如何让 Octave 更改输入文件中的变量?

转载 作者:行者123 更新时间:2023-12-04 01:02:21 31 4
gpt4 key购买 nike

我试图让 Octave 更改输入文件中的变量,就像我在 Ubuntu 中使用命令行一样。我已经把它剥离回一个简单的例子,我让它将 '1111' 更改为字符串 Naer_str,将 '2222' 更改为字符串 sigma_str;将结果打印到新文件。 1111 和 2222 都存在于第一个文件中。这是我在下面运行的整个代码。

 Naer_str= num2str(1000)

disp(Naer_str)

sigma_str = num2str(0.491)

eval(['system(''sed -e "s~1111~${Naer_str}~; s~2222~${sigma_str}~;" OctaveChangeVarTestFile.IN > OctaveChangeVarTestFile_out.IN'');']);

生成了新的输入文件,但没有像我预期的那样看到值 1000 和 0.491,而 0.491 和 1000 应该是空白的地方。在 Debug模式下运行它显示了以下错误消息(自从几天前我开始使用 Octave 以来,我已经看到了很多,但我仍然没有真正理解它的含义)。
 error: invalid use of script in index expression

我曾尝试将内容输入 Linux 终端,如下所示:
 Naer_str=1000
sigma_Str=0.491
sed -e "s/1111/${Naer_str}/; s/2222/${sigma_str}/;" OctaveChangeVarTestFile.IN > OctaveChangeVarTestFile_out.IN

这似乎工作正常,所以我假设我一定是使用 system 或 eval 犯了语法错误,但我看不到它。

是什么导致此错误消息?为什么我看不到预期的输出?

最佳答案

  • 看起来你只有一个 system使用计算命令调用。您可以将计算结果作为 system() 的参数传递已经,你不需要,也不应该使用,eval()这里。
  • 在 Octave 中连接字符串(字符数组)的方法只是水平矩阵连接。所以,而不是 's~1111~${Naer_str}~' (正如 abarnert 指出的那样,它被没有 Octave 变量概念的 shell 插入)你可以写 ['s~1111~' Naer_str]和 Octave 将连接。
  • 您无需超出 Octave 音程即可到达 sed通过 system()用于文本替换。 strrepregexprep可以在 Octave (或 Matlab)内对字符数组进行替换。
  • 关于sed - 如何让 Octave 更改输入文件中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29992940/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com