我正在处理大约 100 多个 conf 文件。我需要为所有这些文件查找并替换各种变量。例如,我想找到这条线
幅度 = 100;并将其替换为:振幅 = 200;对于所有文件。
我在网上搜索过,只找到一个文件的解决方案。我正在寻找一种在 Matlab 中做到这一点的方法。有任何想法吗?
我正在处理大约 100 多个 conf 文件。我需要为所有这些文件查找并替换各种变量。例如,我想找到这条线
幅度 = 100;并将其替换为:振幅 = 200;对于所有文件。
我在网上搜索过,只找到一个文件的解决方案。我正在寻找一种在 Matlab 中做到这一点的方法。有任何想法吗?
好吧,Matlab 的解决方案是(递归地)打开目录中的所有文件。在这里,我展示了非递归解决方案的示例(它不检查子文件夹),尽管如果需要也可以很容易地修改它以搜索子文件夹:
d = dir(yourPath);
for i = 1 : length(d)
if ~(d(i).isdir)
%d(i) is file.
replaceSingleFile(strcat(d(i).folder, d(i).name));
end
end
正如您所说,您已经知道如何替换单个文件,但要在这里获得完整的答案,解决方案可能是沿线(在函数中replaceSingleFile)。
F = fopen(fileYouWantReplaced);
i = 1;
while (~feof(F))
L = fgetl(F);
L = strrep(L, 'Amplitude = 100;', 'Amplitude = 200;');
Buf{i} = L;
i = i + 1;
end
fclose(F);
%now just write all Buf to the same file again.
F = fopen(file..., 'w'); % Discard contents.
for i = 1 : numel(Buf)
fprintf(F, '%s\n', Buf{i});
end
fclose(F);
如果这些文件可以作为普通文本文件打开,那么我不会使用 matlab。Notepad++ 可以根据需要为任意数量的文件提供替换选项,只需确保先在备份文件上对其进行测试。所以让它找到“Amplitude = 100”并用你想要的替换它。
要了解如何操作,请看这里: how-to-find-and-replace-lines-in-multiple-files
如果您不能这样做,请将所有文件放在同一目录中(无论如何您都必须这样做)。然后使用该目录在 matlab 中加载文件并运行 for 循环。但是它可能有点慢。/基本上如果你可以做 1 个文件,你可以用一个 for 循环来完成所有这些。
如果您需要帮助,我可以展示一些我以前使用过的代码。