Ein txt-File editieren mit Hilfe eines anderen txt-Files
GAST_GU
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 07.02.2014, 14:23
Titel: Ein txt-File editieren mit Hilfe eines anderen txt-Files
Hallo allerseits,
ich habe 2 Dateien. Bestimmte Zeilen (abhängig was in der ersten und zweiten Spalte steht) der ersten Datei sollen so verändert werden, das am Anfang der Zeile ein $-Zeichen vor dem Text steht. In der anderen Datei muss man diese Informationen der ersten und zweiten Spalte herausnehmen.
Also: Datei 1: verändern und Datei 2:Info rauslesen, um zu wissen was an Datei 1 verändert werden soll!
Aus Datei 2 will ich rauslesen: Alle Zeilen in der Spalte 1 muss 'GRID' stehen. Da soll dann auch die 2.Spalte mitgenommen werden. Mit dieser Info in der Datei 1 suchen, wo diese Zeile identisch ist (mit den ersten 2 Spalten) und dort dann am Anfang den $ hinzufügen.
In der Datei 1 ist es manchmal so, dass diese eine Zeile über 2 Zeilen geht. Da hat aber immer die drauffolgende Zeile ein Plus-Zeichen (+) am Anfang. Diese Zeile müsste auch ein $-Zeichen dann davor haben.
Seit gestern sitze ich hier dran und verzweifle, habe bisher den Code zusammengebracht^^:
Code:
% fid = fopen('FM_ohne-Links.bdf'); % öffne Datei % data = {}; % intialisiere zu lesende Daten als leeres Cell Array % while ~feof(fid) % weiter bis zum Ende der Datei % l = fgetl(fid); % Zeile auslesen % if strcmpi(l{ }, 'GRID') % data = [data; textscan(l, '%s %s %s %s %s %s %s %s %s')]; % end % end
da musst die Datei 1 am besten komplett einlesen, und dann diese im Speicher verändern z.b durch STRREP
auf jedenfall einlesen der ersten Datei geht so:
Code:
fid = fopen('Datei1.txt')
data= textscan(fid,'%s');
data = [data{:}];
fclose(fid);
Die andere Datei muss man vielleicht zeilenweise einlesen, und dann die Anweisungen ausführen, bin mir nicht sicher, weil ich nicht ganz deine Ausführung verstehe.
GAST_GU
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.02.2014, 10:56
Titel:
Vielen Dank Denny, dass du geantwortet hast.
Ich habe es hinbekommen, da ich beide dateien als delimiter und string eigelesen habe, als ein cell array. Dann habe ich es als C{1} ausgelesen und es dann mit dem Befehl strncmpi die Anweisungen ausgeführt.
Vielen Dank nochmal!
GAST_GU
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.02.2014, 12:08
Titel:
Hallo allerseits,
ich hab doch noch eine Frage. Ich habe folgende Funktion:
C2 ist meine vorher rausgelesene Datei, die genau die Zeilen beinhaltet, vor denen ein $-Zeichen stehen soll.
Die Datei, die verändert werden soll, also line-no-double-space, hat die Zeilen, die in der C2 sich befinden, aber in der line-no-datei gehen diese Zeilen manchmal über 2 Zeilen. Das heisst, dass die 2. Zeile mit einem +-Zeichen anfängt. Diese darauffolgende Zeile, die mit dem +-Zeichen beginnt, dort soll auch ein $-Zeichen vorstehen.
Daher meine Frage: Wie mache ich das genau? Ich habe eine for-Schleife, die beinhaltet aber das nicht mit den darauffolgenden Zeilen.
Danke Denny. Aber ich möchte nur, dass Zeilen, die mit dem 'PLUS' (+) Zeichen anfangen, auch einen $-Zeichen vor dieser Zeile stehen haben, wenn die eine Zeile davor auch ein $-Zeichen hat.
Ich habe weiter versucht und den folgenden Code hinbekommen:
In diesem Fall kriegt aber JEDE Zeile, die mit einem Plus (+) anfängt, einen $-Zeichen davor gesetzt. Ich möchte aber nur bei den Zeilen (die mit 'Plus' (+) anfangen) ein $ bei denen eine Zeile davor auch ein $-Zeichen ist. Bei meiner for-Schleife macht er das leider bei allen Plus-Zeichen....
Vielen Dank Denny!
Ja vorher hatte es funktioniert, aber ich glaube nur deswegen, weil man der Variablen nur die '1' zugeordnet hatte, mit der '0' muss man dann schon vor der Schleife die Variable initialisieren.
Dann hat es auch funktioniert, Danke nochmal!
Was ist, wenn nicht nur die darauffolgende Zeile, sondern auch die übernächste Zeile mit einem 'Plus'-Zeichen anfängt, denn die sollte dann auch ein $-Zeichen am Anfang der Zeile bekommen. In meinem Fall würde es nur die darauffolgende Zeile mit dem $-Zeichen auskommentieren. Wie kann ich es dazu bringen, dass er auch die übernächste Zeile prüft, ob es ein Plus Zeichen ist....?
Ich könnte ja erneut so vorgehen, dass ich noch eine Variable hinzufüge, wie ich das mit last_line_commented gemacht habe, aber das würde ja das Skript dann immer länger machen. Gibt es keine andere Variante, dass nicht nur die darauffolgende Zeile mit dem 'Plus'-Zeichen auskommentiert wird sondern auch die nächsten Plus-Zeichen??
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.