Top-Themen

Aktuelle Themen (A bis Z)

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
GELÖST

Zeilen zwischen zwei Werten ausgeben

Frage Entwicklung

Mitglied: Uppe

Uppe (Level 1) - Jetzt verbinden

27.10.2010 um 11:32 Uhr, 2814 Aufrufe, 7 Kommentare

Hallo,

ich habe eine Datei, die wie folgt aufgebaut ist:

Gruppe1

blabla
blublu

Textmarke1

wichtig1
wichtig2

wichtig3
wichtig4

Textmarke2

blibli
bloblo

Gruppe2

haha

hihi

Textmarke1

wichtig5

wichtig6
wichtig7

Textmarke2
usw

Ich brauche aus dieser Datei jeweils die Gruppe und alles was zwischen Textmarke1 und Textmarke2 steht. Das möchte ich in einer neuen Datei mit Semikolon getrennt in eine Zeile schreiben.

Ich kann die Datei zeilenweise einlesen und auch die Gruppe in die neue Datei schreiben. Aber wie muß ich nun weitermachen, dass die Zeilen zwischen den Textmarken direkt hinter die jeweilige Gruppe geschrieben werden?

Danke und Gruß Uppe

PS: Die Leerzeilen sind willkürlich und ich brauche sie nicht.


blublu
Mitglied: micneu
27.10.2010 um 11:37 Uhr
ein fall für sed und/oder awk

auf welchem system willst du es gelöst haben?
Bitte warten ..
Mitglied: Uppe
27.10.2010 um 11:57 Uhr
Hallo,

habe gerade mal nach sed und awk gegoogelt. Oh, oh, da steht mir ja was bevor! Ich habe bisher mit vbscript rumgedoktert.

Es sind Log-Dateien in einem Windows-Verzeichnis.

Gruß Uppe
Bitte warten ..
Mitglied: micneu
27.10.2010 um 12:16 Uhr
von welchem programm?
würde mir noch etwas helfen ein awk script zu schreiben.
bin schon dabei mit den daten die ich von dir habe
Bitte warten ..
Mitglied: Uppe
27.10.2010 um 12:32 Uhr
wie "von welchem Programm"? Es sind die Logdateien eines Legato Networkers.
Bitte warten ..
Mitglied: miniversum
27.10.2010 um 13:33 Uhr
Wenn du schon mit vbscript angefangen hast dann würde ich damit weiter machen.
Du kannst die Datei ja komplett einlesen, dan hast du siein einer Variabeln.
Dann kannst über die instr Funktion die Position von Gruppe1 und Gruppe2 suchen und mit der Mid Funktion alles dazwischen raussuchen. Danach machst du das gleiche nochmal mit Textmarke1 und Textmarke2.
Alternativ kanns du auch gleich beim zeilenweisen einlesen Das wegschreiben was du brauchst.
Dabei arbeitest du mit z.b. 2 Variabeln, InGruppe1 und InTextmarke1. Beid setzt zu auf 0.
InGruppe1 = 0
InTextmarke1 = 0
SchreibZeile = ""
Du liest in einer Schleife Zeile für Zeile ein (aktZeile).
In der Schleife machst du eine Abfrage für Gruppe1, Gruppe2, Testmarke1 und für Testmarke2.
If aktZeile = "Gruppe2" then InGruppe1 = 0
If aktZeile = "Textmarke2" then InTextmarke1 = 0
If InGruppe1 = 1 and InTextmarke1 = 1 then SchreibZeile = SchreibZeile & aktZeile & ";"
If aktZeile = "Textmarke1" then InTextmarke1 = 1
If aktZeile = "Gruppe1" then InGruppe1 = 1
Und nach der Schleife schreibst du dann SchreibZeile in eine Datei.
Bitte warten ..
Mitglied: bastla
27.10.2010 um 17:49 Uhr
Hallo Uppe!

Als VBS (ausgehend von der oben dargestellten Struktur) etwa so:
01.
Ein = "D:\Datei.txt" 
02.
Aus = "D:\Datei.csv" 
03.
Gruppe = "Gruppe" 
04.
Von = "Textmarke1" 
05.
Bis = "Textmarke2" 
06.
Delim = ";" 
07.
 
08.
Set fso = CreateObject("Scripting.FileSystemObject") 
09.
Set E = fso.OpenTextFile(Ein) 
10.
Set A = fso.CreateTextFile(Aus) 
11.
 
12.
LGr = Len(Gruppe) 
13.
Do Until E.AtEndOfStream 
14.
    ZEin = Trim(E.ReadLine) 'Leerzeichen vor und nach dem Text entfernen 
15.
    If ZEin <> "" Then 'keine Leerzeilen verarbeiten 
16.
        If Left(ZEin, LGr) = Gruppe Then 'Beginn Gruppe? 
17.
            ZAus = ZEin 'Ausgabzeile beginnt mit Gruppennamen 
18.
        ElseIf ZEin = Von Then 'Beginn "wichtiger" Bereich? 
19.
            InBereich = True 'Schalter setzen 
20.
        ElseIf ZEin = Bis Then 'Ende "wichtiger" Bereich? 
21.
            A.WriteLine ZAus 'Zeile in Datei schreiben 
22.
            InBereich = False 'Schalter rücksetzen 
23.
        ElseIf InBereich Then 'Zeile aus "wichtigem" Bereich? 
24.
            ZAus = ZAus & Delim & ZEin 'der Ausgabezeile (nach Trennzeichen) hinzufügen 
25.
        End If 
26.
    End If 
27.
Loop 
28.
A.Close
Annahmen:
  • Jede Gruppenbezeichnung beginnt mit "Gruppe" (siehe Zeile 3).
  • Jede Gruppe enthält genau einen "wichtigen" Teil.
  • Jeder "wichtige" Teil ist zuverlässig durch "Textmarke1" (= Von) und "Textmarke2" (=Bis) begrenzt.
  • Groß-/Kleinschreibung der Gruppennamen und Textmarken stimmen mit den Angaben in den Zeilen 3 bis 5 überein.
  • Leerzeichen an Beginn und Ende der Zeile dürfen entfernt werden, Leerzeilen fallen weg.

Grüße
bastla
Bitte warten ..
Mitglied: Uppe
27.10.2010 um 22:34 Uhr
Hallo bastla,

vielen Dank! Damit kann ich es für mich anpassen. Super!

Gruß Uppe
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Wert aus einer Spalte mit Werten in einer Spalten vergleiche, wenn Wert vorhanden, dann Wert aus der dritten Spalte in der selben Zeile ausgeben, verschiedene Tabellenblätter
gelöst Frage von DevilioMicrosoft Office5 Kommentare

Hallo Zusammen, ich habe folgendes Problem und finde keine Lösung. Ich habe 2 Tabellenblätter mit folgenden Daten: Tabelle 1: ...

Microsoft Office
Excel nächstligenden Wert ausgeben
gelöst Frage von Florian86Microsoft Office5 Kommentare

Hallo, ich habe folgende Tabelle Spalte A Spalte B Spalte C Spalte D Spalte E Spalte F Wert1 Bemerkung ...

Microsoft Office
Excel Inhalt mehrere Zellen in einer Zeile nach einem Wert durchsuchen und den Inhalt dann ausgeben
gelöst Frage von michael1306Microsoft Office3 Kommentare

Hallo, für manche wahrscheinlich zimmlich einfach, aber ich komme nicht auf die Lösung. Ich habe eine Excel Tabelle die ...

Ubuntu
Sed, 4. zeile nach regexp ausgeben
Frage von rsadmchefUbuntu1 Kommentar

Hallo Team, Mein System ist Lubuntu 14.04 LTS Ich benötige ein wenig sed - Hilfe. Meine zu bearbeitende Datei ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 13 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 14 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 21 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...