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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 01.07.2009 um 21: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-ID: 119555
Url: https://administrator.de/forum/skriptgesteuert-zeilen-einer-datei-aendern-p-s-unter-linux-119555.html
Ausgedruckt am: 15.05.2025 um 19:05 Uhr
4 Kommentare
Neuester Kommentar
...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