Единственным символом linux (и unix), который не разрешен в пути к файлу, является символ ascii nul \0
(он недопустим, поскольку он используется в качестве ограничителя строк --- в этом случае терминатор имени пути --- в открытом (2) системном вызове, поэтому вы можете иметь только один, в конце, не считая символом файла). Старые стили запретили группировку нескольких косичек /
, поэтому правильное регулярное выражение будет (\/?[^\0/])+|\/
(последовательность необязательного символа косой черты, за которой следует не-нулевой символ и символ не слэш, или только запись /
- указав корневой каталог), который позволяет использовать все символы, но ascii nul, и не допускает одновременного отображения двух слэшей. Недавние реализации позволяют группировать косые черты (сворачивая их в один), поэтому допустимый путь regexp будет [^\0]+
.
Но это соответствует всем введенным вами данным (даже, он будет соответствовать всем входам как один путь к файлу, так как символы \n
разрешены как часть имени файла), поэтому вам нужно быть более точным в своем вопросе, чтобы разоблачить то, что вы хотите, и то, что вы не хотите принимать. "foo.log was written"
и "the file "
(с этим конечным пространством) являются действительными именами файлов в linux (и в unix). как насчет других управляющих символов? Что относительно escape-последовательностей, символов wildcar (например *
или ?
) и т. Д.?
Просто используйте цикл for для цикла через каждый столбец.
missing_part = zeros(size(final_plot_matrix,1),size(final_plot_matrix,2));
for ip = 2:1:data_to_be_interpolated
missing_part(2:end,ip) = fillmissing(final_plot_matrix(2:end,ip),'linear','SamplePoints',final_plot_matrix(2:end,1));
end
missing_part(:,1) = final_plot_matrix(:,1);
missing_part(1,:) = final_plot_matrix(1,:);
Помните, что этот final_plot_matrix
должен быть целыми данными.
Попробуйте это. он сохранит значения «data_to_be_interpolated» в матрице недостающих из второго столбца.
data_to_be_interpolated = final_plot_matrix(:,:);
missing_part =
zeros(size(data_to_be_interpolated,1),size(data_to_be_interpolated,2)-1);
for ip = 1:size(missing_part,2)
missing_part(:,ip) = data_to_be_interpolated(:,ip+1);
end