Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
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.

skriptgesteuert Zeilen einer Datei ändern - - - P.S. Unter Linux - - -

Frage Entwicklung Batch & Shell

Mitglied: hotte001

hotte001 (Level 1) - Jetzt verbinden

01.07.2009, aktualisiert 21:37 Uhr, 3978 Aufrufe, 4 Kommentare

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?
Mitglied: TsukiSan
01.07.2009 um 19:33 Uhr
...auch ein fröhliches Hallo, hotte

in VB würde dies circa so aussehen
01.
dim D as freefile 
02.
open "C:\Datei.???" for input as D 
03.
while not eof(D) 
04.
Line Input ' D , AdrTemp$ 
05.
if AdrTemp$ = "4712" then 
06.
 input # D , StrTemp1$, StrTemp2$,StrTemp3$,StrTemp4$,StrTemp5$,StrTemp6$ 
07.
select case "Wasauchimmer" 
08.
case StrTemp1$ 
09.
  'irgendwas machen 
10.
case StrTemp2$ 
11.
 'irgendwas machen 
12.
case StrTemp3$ 
13.
  'irgendwas machen 
14.
'usw. 
15.
end select 
16.
end if 
17.
wend 
18.
close
Soweit zu VB.
Ich denke aber, daß geht auch mit scripten. Aber da sind andere Experten gefragt.

Gruß
Tsuki
Bitte warten ..
Mitglied: hotte001
01.07.2009 um 20:14 Uhr
Ups - dabei fällt mir gerade auf, ich vergass zu sagen, dass ich dies unter Linux machen will.
Also eher bash, perl, oder so ähnlich.

hotte
Bitte warten ..
Mitglied: TsukiSan
01.07.2009 um 20:33 Uhr
Na dann auch ein Ups

Gruß
Tsuki
Bitte warten ..
Mitglied: 68162
02.07.2009 um 06:59 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Firewall
Welche Firewall ? (18)

Frage von Cyberurmel zum Thema Firewall ...

Windows Server
gelöst Einzelnes Windows Update über GPO deinstallieren (16)

Frage von lordofremixes zum Thema Windows Server ...

Windows Server
GPO zum Deinstallieren von Office Update wird nicht ausgeführt (15)

Frage von lordofremixes zum Thema Windows Server ...