我正在尝试从txt文件中检索特定数据,并希望将其保存在新的txt文件中。
以下是我想从文本文件中检索的数据示例:
//
FORMAT CDDF1.0
DOMAIN 1cuk003
VERSION 3.1.0
VERDATE 20-Jan-2007
NAME Ruva protein. Chain: null. Engineered: yes
SOURCE Escherichia coli. Strain: 12 bl21 (de3). Expressed in: escherichia co
SOURCE li.
CATHCODE 1.10.8.10
CLASS Mainly Alpha
ARCH Orthogonal Bundle
TOPOL Helicase, Ruva Protein; domain 3
HOMOL DNA helicase RuvA subunit, C-terminal domain
DLENGTH 48
DSEQH >pdb|1cuk003
DSEQS TDDAEQEAVARLVALGYKPQEASRMVSKIARPDASSETLIREALRAAL
NSEGMENTS 1
SEGMENT 1cuk003:1:1
SRANGE START=156 STOP=203
SLENGTH 48
SSEQH >pdb|1cuk003:1:1
SSEQS TDDAEQEAVARLVALGYKPQEASRMVSKIARPDASSETLIREALRAAL
ENDSEG
//
根据这些细节,我正在尝试检索“DOMAIN,SRANGE START AND STOP”,但我只想选择信息,而不是文件名的标题。例如,DOMAIN是1cuk003,我只想从中选择“1cuk003”。
我是否需要将此数据存储在数组中?或者有什么其他方法可以用来解决这个问题。此外,我有超过10,000个使用不同值的更多这些数据。
另一部分是,一旦我重新获得这些数据,我就会想要使用“sprintf”来格式化数据,例如。 sprintf('INSERT INTO postgres VALUES %d,%d.',array1,array2);
这可能吗?
基本上,最后,我希望有一个文本文件,其中包含已存储的所有数据的SQL INSERT语句,我可以在PostgreSQL中轻松执行它们。
我做了一个测试代码,在其中打开一个文本文件,复制数据并将其保存在一个新的文本文件中。
fid = fopen('sample.txt');
readfile = fread(fid, '*char');
fclose(fid);
output = fopen('output_sample.txt', 'wt');
fprintf(output,'%s \n', readfile);
fclose(output);
谢谢。
答案 0 :(得分:1)
有几个MATLAB函数可以派上用场:
有了这些,基本的工作流程就是这样:
domain = '';
start = '';
stop = '';
fin = fopen('sample.txt', 'r');
fout = fopen('output.txt', 'w');
% TODO: Add error check!
while true
line = fgetl(fin); % Get the next line from the file
if ~ischar(line)
% End of file
break;
end
[key, value] = strtok(line); % Split line at the first space
switch key
case 'DOMAIN'
% Store domain
domain = value;
case 'SRANGE'
% Retrieve start and stop values
m = regexp(value, 'START=(\d+)\s*STOP=(\d+)', 'tokens');
start = m{1};
stop = m{2};
% Print result
fprintf(fout, 'INSERT INTO postgres VALUES %s, %s, %s.\n', domain, start, stop);
end
end
fclose(fin);
fclose(fout);
我目前无法访问MATLAB安装,因此上述代码未经过测试。不过,它应该让你去。