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

Textdateien inhaltlich vergleichen

Mitglied: ghoyer

ghoyer (Level 1) - Jetzt verbinden

12.03.2009, aktualisiert 09:12 Uhr, 2520 Aufrufe, 2 Kommentare

Tach zusammen,

Folgendes Problem:
Ich habe zwei Dateien eines Rechenlaufes, von welchen eine die Werte aller Rechenzeitschritte enthält, die andere nur die Maximalwerte. Die Dateien sehen dabei wie folgt aus:

Die Datei mit den Einzelwerten (WSPL.dat):
01.
SCALAR 
02.
ND  21516 
03.
ST  0 
04.
TS        10.00 
05.
    0.0000 
06.
    0.0000 
07.
    0.0000 
08.
    0.0000 
09.
    0.0000 
10.
    0.0000 
11.
... 
12.
SCALAR 
13.
ND  21516 
14.
ST  0 
15.
TS     14400.41 
16.
    0.0000 
17.
  115.8919 
18.
  115.8919 
19.
  115.8900 
20.
  115.8861 
21.
  115.8864 
22.
... 
23.
SCALAR 
24.
ND  21516 
25.
ST  0 
26.
TS     28800.33 
27.
    0.0000 
28.
  116.2450 
29.
  116.2450 
30.
  116.2397 
31.
  116.2361 
32.
  116.2369 
33.
... 
34.
usw.
"ND" steht dabei für die Anzahl der Rechennetzknoten (Nodes) und damit die Anzahl der Zeilen je Zeitschritt,
"TS" für den aktuellen Zeitschritt (Time Step) in Sekunden. Die Nachkommastellen bei der Zeit sind für mich uninteressant.
Ein "End-Tag" je Zeitschritt ist nicht vorhanden.

Die Datei mit den Maximalwerten (WSPL_max.dat):
01.
SCALAR 
02.
ND  21516 
03.
ST  0 
04.
TS     43200.19 
05.
    0.0000 
06.
  116.4927 
07.
  116.4927 
08.
  116.4711 
09.
  116.4741 
10.
  116.4742 
11.
...
Hier ist "TS" der letzte gerechnete Zeitschritt.

Ich möchte nun eine Datei, in der der Zeitschritt steht, in dem das Maximum erreicht wird. z.B. so (Diese ist jetzt nur gebastelt!):
01.
SCALAR 
02.
ND  21516 
03.
ST  0 
04.
TS     43200.19 
05.
    0.0000 
06.
  3600 
07.
  7200 
08.
  14400 
09.
  28800 
10.
  7200 
11.
...

Zum Thema Robustheit / Datenvolumen:
Die vorherigen Daten stammen aus einem überschaubaren Rechennetz. Die Anzahl der Knoten (ND) liegt z.Z. um die 1,2 Mio. bei 50 Zeitschritten und mehr. Das macht ca 13 MB für die WSPL_max.dat und z.B. 640 MB für die WLSP.dat. Für diese Groß-Projekte darf die Aufbereitung auch ein paar Stündchen dauern.

Meine Idee wäre, die WSPL.dat in einzelne Datei-"Scheibchen" je Zeitschritt zu teilen (z.B. per FOR-Schleife) und dann z.B. per FC die Scheibchen mit der Maximaldatei zu vergleichen. Irgendwo hatte ich hier im Forum auch schon ein VB-Script für Berechnungen mit Nachkommastelle gefunden.

Bevor ich jetzt drauf los klimpere und einen Haufen Zeit wegen unausgereifter Batch- / VB-Kenntnisse vertrödle, wollte ich Euch um Kommentierung bzw. Alternativvorschläge bitten.

Danke, Gisi
Mitglied: Biber
13.03.2009 um 18:56 Uhr
Moin ghoyer,

ich würde eine etwas Strategie vorschlagen...
Dein Lösungsansatz würde ja auch zum Ziel führen, hat aber irgendwie den immer deprimierend wirkenden Anstrich von stundenlangem stupiden Sandschaufeln.
So was schlägt mir immer aufs Gemüt.

Wenn ich die Anforderung richtig verstanden habe, dann willst Du doch nur den Max-Wert der Zeilen "TS nnnnn.mm" ermitteln und genau diesen vollständigen Block rausziehen.

Also wäre meine Idee
  • den Max-Wert (neudeutsch maxvalue, im folgenden als Variable %mv% auftauchend) der "TimeStep"-Zeilen ermitteln
  • von dieser Zeile mit dem maxWert merken wir uns die Zeilen-Nummer (nenn ich mal %mvl% wie maxValueLine.
  • und holen uns aus dem ganzen Riesen-Textgeraffel der wspl.dat diese Zeile+ein paar Zeilen plusminus aus.

Schritt 1 & 2 lassen sich mit einer CMD-Promptzeile abfackeln, wie ich an einer um 2 Blöcke erweiterten wspl.dat demonstrieren möchte:
01.
SCALAR 
02.
ND  21516 
03.
ST  0 
04.
TS        10.00 
05.
    0.0000 
06.
    0.0000 
07.
    0.0000 
08.
    0.0000 
09.
    0.0000 
10.
    0.0000 
11.
... 
12.
SCALAR 
13.
ND  21516 
14.
ST  0 
15.
TS     14400.41 
16.
    0.0000 
17.
  115.8919 
18.
  115.8919 
19.
  115.8900 
20.
  115.8861 
21.
  115.8864 
22.
... 
23.
SCALAR 
24.
ND  21516 
25.
ST  0 
26.
TS     28800.33 
27.
    0.0000 
28.
  116.2450 
29.
  116.2450 
30.
  116.2397 
31.
  116.2361 
32.
  116.2369 
33.
SCALAR 
34.
ND  12345 
35.
ST  0 
36.
TS        10.00 
37.
    0.0000 
38.
    0.0000 
39.
    0.0000 
40.
    0.0000 
41.
    0.0000 
42.
    0.0000 
43.
... 
44.
SCALAR 
45.
ND  23456 
46.
ST  0 
47.
TS     14400.41 
48.
    0.0000 
49.
  115.8919 
50.
  115.8919 
51.
  115.8900 
52.
  115.8861 
53.
  115.8864
Darauf schiesse ich diese Zeile ab vom CMD-Prompt:
[ohne ">".... das ">" ist mein Prompt-Zeichen.... NICHT mit eingeben!]
01.
>set "mv=0" & for /f "tokens=1-3 delims=:. " %i in ('findstr /n "^TS" wspl.dat') do @if %k GTR !mv! @(set "mv=%k" && set "ml=%i" & @echo mv=%k; !ml!)
... und erhalte (as should do) folgende Ausgabe:
01.
mv=10; 4 
02.
mv=14400; 15 
03.
mv=28800; 26
---> d.h. mit dieser einen Zeile habe ich den TS-maxWert 28000 ermittelt und weiss, dass der in Zeile 26 Steht

Wenn ich dann noch "weiss", dass zwei Zeilen davor der NodeName steht und in den 5 Zeilen danach die Detailwerte, dann kann ich diese Zeilen gezielt herausfieseln.
01.
>findstr /n $ wspl.dat|findstr "^24: ^26: ^27: ^28: ^29: ^30: ^31: ^32" 
02.
24:ND  21516 
03.
26:TS     28800.33 
04.
27:    0.0000 
05.
28:  116.2450 
06.
29:  116.2450 
07.
30:  116.2397 
08.
31:  116.2361 
09.
32:  116.2369
Nun muss ich nur noch die Zeilen-Nummern wieder entsorgen:
01.
>for /f "delims=: tokens=2" %i in ('findstr /n $ wspl.dat^|findstr "^24: ^26: ^27: ^28: ^29: ^30: ^31: ^32"') do @echo %i 
02.
ND  21516 
03.
TS     28800.33 
04.
    0.0000 
05.
  116.2450 
06.
  116.2450 
07.
  116.2397 
08.
  116.2361 
09.
  116.2369
Dann habe ich den Block, den Du wolltest.

Oder habe ich es falsch verstanden?

Grüße
Biber
Bitte warten ..
Mitglied: ghoyer
15.03.2009 um 16:30 Uhr
Hallo, Batch-Großmeister,

Ich sehe, ich muss meine Ausdrucksweise verbessern.

Hatte ich schon erwähnt, das "ND" die ANZAHL der Knoten ist? Diese ist immer gleich.
Die TS-Werte sind von einer "Scheibe" zur nächsten aufsteigend (z.B. wird aller 2 h = 7200 s ein Daten-"Scheibchen" ausgeschrieben, d.h. an die WSPL.dat angehängt.).
Ansonsten sind die Kopfzeilen mehr oder weniger Schall und Rauch.

Die individuelle Knotennummer ist nicht in der Datei enthalten, die Zeilennummer in jedem Daten-"Scheibchen" entspricht hier der Knotennummer (abzüglich der paar Kopfzeilen)

Ich möchte im Ergebnis also einen einfaches Daten-"Scheibchen", in dem für jeden einzelnen Knoten steht, in welchem Zeitschitt (also WANN, der TS-Wert am Beginn jedes "Scheibchens") an diesem das für jeden Knoten individuelle Maximum erreicht wird. Das ist aufgrund von Wellenausbreitungen durchaus in unterschiedlichen Zeitschritten möglich.
Der individuelle Maximalwert steht ja schon in der WSPL_max.dat.

Ich hoffe, ich konnte alle Klarheiten beseitigen

Danke, Gisi
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Textdateien vergleichen BATCH
gelöst Frage von FeudelFredBatch & Shell2 Kommentare

Moin Moin, ich bin komplett neu im Forum und habe auch keine sonderlich großen Erfahrungen mit Foren. Habe eine ...

Batch & Shell

Zahlen aus Textdatei in Batch vergleichen

gelöst Frage von yspke24Batch & Shell7 Kommentare

Hi, ich habe schon stundenlang im Internet gesucht, konnte aber nichts Passendes finden. Ich habe eine Textdatei "time.log". In ...

Ubuntu

Wie kann man 2 Textdateien vergleichen (OHNE SORTIERUNG!) und die gleiche Zeilen in einer Datei lassen und den Rest löschen?

gelöst Frage von takitanoUbuntu11 Kommentare

Ich habe 2 Textdateien mit deutschen Wörtern. Erste Datei ist nach Häufigket von Wörtern sortiert (frequency list) und zweite ...

Batch & Shell

Batch: Erste Stellen von zwei aufeinander folgenden Zeilen derselben Textdatei vergleichen

gelöst Frage von ole-objektBatch & Shell5 Kommentare

Hallo mal wieder, meine derzeitige Arbeit erfordert leider viele Vergleiche von verschiedenen Dateien und nun also auch innerhalb derselben ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 19 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 20 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

LAN, WAN, Wireless
Gigabit-Lan mit zwei 4-adrigen Kabeln?
Frage von ArvedirmerLAN, WAN, Wireless11 Kommentare

Ich habe folgendes Problem: Ich betreue eine kleine Firma die sich im 1.Stock eines Gebäudes befindet. Es existiert ein ...

Router & Routing
Routing Probleme mit Firewall
gelöst Frage von mb1811Router & Routing9 Kommentare

Hallo Zusammen! Ich habe folgende Problematik, wo ich ein wenig Input benötige: Gem. angehängter Skizze habe ich folgenden Stand: ...