skriptgesteuert Zeilen einer Datei ändern - - - P.S. Unter Linux - - -
Ich möchte mit Bezug auf die Einsprung Adresse (s.u.) in einer Datei
in einer/mehrerer Zeile/n mal den Wert1 löschen oder dazusetzen oder die Zeile so
belassen.
Gegeben sei eine Datei folgenden Aufbaus:
Einsprung Adresse
feste
Anzahl
von
Zeilen
bis
zur
nächsten
Einsprung Adresse
In einer festen Anzahl von Zeilen stehen kommaseparierte Werte
z.b { Wert1,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
die aber nicht alle ausgefüllt sein müssen
Z.Bsp
Adresse 4711
{ Wert1,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
{ Wert1,,Wert3,Text1,Text2,Wert4,Zahl1 }
{ ,Wert2,,Text1,,Wert4,Zahl1 }
{ ,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
{ Wert1,Wert2,Wert3,,Text2,Wert4,Zahl1 }
{ Wert1,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
{ ,Wert2,Wert3,,Text2,Wert4,Zahl1 }
{ ,Wert2,Wert3,Text1,Text2,Wert4, }
{ Wert1,Wert2,Wert3,Text1,Text2,,Zahl1 }
{ ,Wert2,,Text1,,Wert4,Zahl1 }
Adresse 4712
{ Wert1,Wert2,Text1,Text2,Wert4,Zahl1 }
{ Wert1,,Wert3,Text1,Text2,Wert4,Zahl1 }
{ ,,,Text1,,Wert4,Zahl1 }
{ ,,,Text1,Text2,Wert4,Zahl1 }
{ Wert1,,,,,Wert4,Zahl1 }
{ Wert1,Wert2,,,,Wert4,Zahl1 }
{ ,Wert2,Wert3,,Text2,Wert4,Zahl1 }
{ ,Wert2,Wert3,Text1,Text2,Wert4, }
{ Wert1,Wert2,Wert3,Text1,Text2,,Zahl1 }
{ ,Wert2,,Text1,,Wert4,Zahl1 }
usw
Meine Idee war die Adresse zu suchen und dann zeilenweise z.B in einer while schleife die Zeilen einlesen,
Bedingung prüfen (muss Wert1 gesetzt/gelöscht werden) , und die gewünschte Änderung Zeile ändern und/oder weiter zur nächsten Zeile.
Doch, mit welcher skriptsprache komme ich hier am besten zum Ziel,
und wie fange ich an?
in einer/mehrerer Zeile/n mal den Wert1 löschen oder dazusetzen oder die Zeile so
belassen.
Gegeben sei eine Datei folgenden Aufbaus:
Einsprung Adresse
feste
Anzahl
von
Zeilen
bis
zur
nächsten
Einsprung Adresse
In einer festen Anzahl von Zeilen stehen kommaseparierte Werte
z.b { Wert1,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
die aber nicht alle ausgefüllt sein müssen
Z.Bsp
Adresse 4711
{ Wert1,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
{ Wert1,,Wert3,Text1,Text2,Wert4,Zahl1 }
{ ,Wert2,,Text1,,Wert4,Zahl1 }
{ ,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
{ Wert1,Wert2,Wert3,,Text2,Wert4,Zahl1 }
{ Wert1,Wert2,Wert3,Text1,Text2,Wert4,Zahl1 }
{ ,Wert2,Wert3,,Text2,Wert4,Zahl1 }
{ ,Wert2,Wert3,Text1,Text2,Wert4, }
{ Wert1,Wert2,Wert3,Text1,Text2,,Zahl1 }
{ ,Wert2,,Text1,,Wert4,Zahl1 }
Adresse 4712
{ Wert1,Wert2,Text1,Text2,Wert4,Zahl1 }
{ Wert1,,Wert3,Text1,Text2,Wert4,Zahl1 }
{ ,,,Text1,,Wert4,Zahl1 }
{ ,,,Text1,Text2,Wert4,Zahl1 }
{ Wert1,,,,,Wert4,Zahl1 }
{ Wert1,Wert2,,,,Wert4,Zahl1 }
{ ,Wert2,Wert3,,Text2,Wert4,Zahl1 }
{ ,Wert2,Wert3,Text1,Text2,Wert4, }
{ Wert1,Wert2,Wert3,Text1,Text2,,Zahl1 }
{ ,Wert2,,Text1,,Wert4,Zahl1 }
usw
Meine Idee war die Adresse zu suchen und dann zeilenweise z.B in einer while schleife die Zeilen einlesen,
Bedingung prüfen (muss Wert1 gesetzt/gelöscht werden) , und die gewünschte Änderung Zeile ändern und/oder weiter zur nächsten Zeile.
Doch, mit welcher skriptsprache komme ich hier am besten zum Ziel,
und wie fange ich an?
Please also mark the comments that contributed to the solution of the article
Kommentar vom Moderator Biber am Jul 01, 2009 um 19:37:18 Uhr
Habe den Beitragstitel ergänzt.
Warum der Beitragsersteller selbst nach TzukiSans Kommentar nicht auf die Idee des "Editierens" kam entzieht sich meiner Kenntnis.
Warum der Beitragsersteller selbst nach TzukiSans Kommentar nicht auf die Idee des "Editierens" kam entzieht sich meiner Kenntnis.
Content-Key: 119555
Url: https://administrator.de/contentid/119555
Printed on: April 24, 2024 at 14:04 o'clock
4 Comments
Latest comment
...auch ein fröhliches Hallo, hotte
in VB würde dies circa so aussehen
Soweit zu VB.
Ich denke aber, daß geht auch mit scripten. Aber da sind andere Experten gefragt.
Gruß
Tsuki
in VB würde dies circa so aussehen
dim D as freefile
open "C:\Datei.???" for input as D
while not eof(D)
Line Input ' D , AdrTemp$
if AdrTemp$ = "4712" then
input # D , StrTemp1$, StrTemp2$,StrTemp3$,StrTemp4$,StrTemp5$,StrTemp6$
select case "Wasauchimmer"
case StrTemp1$
'irgendwas machen
case StrTemp2$
'irgendwas machen
case StrTemp3$
'irgendwas machen
'usw.
end select
end if
wend
close
Soweit zu VB.
Ich denke aber, daß geht auch mit scripten. Aber da sind andere Experten gefragt.
Gruß
Tsuki
In PERL oder so gibt's sicher bessere Lösungen, aber da ich das nicht kann als Shellscript-Gedanken-Experiment:
Mit "grep" kannst Du z.B. nach "Adresse 4712" suchen; es gibt Dir weiterhin die Möglichkeit eine danach folgende feste Zeilenanzahl auszugeben (egal ob in TEMP-Datei, Bildschirm, Pipe).
Das dann weiter verarbeiten via "sed" oder zeilenweise "for each in x".
Den Textfetzen dann wieder via "sed" ins Original einfügen.
MfG, FM_81
Mit "grep" kannst Du z.B. nach "Adresse 4712" suchen; es gibt Dir weiterhin die Möglichkeit eine danach folgende feste Zeilenanzahl auszugeben (egal ob in TEMP-Datei, Bildschirm, Pipe).
Das dann weiter verarbeiten via "sed" oder zeilenweise "for each in x".
Den Textfetzen dann wieder via "sed" ins Original einfügen.
MfG, FM_81