Hallo zusammen. Es geht um die CSV-Dateien, die WSPR als Monatsdaten bereit stellt. Zur Info: WSPR = W(eak) S(ignal) P(ropagation) R(eporter) Wer Genaueres wissen möchte: http://wsprnet.org/drupal/ Hier wird u. a. unter 'Download' eine monatliche Liste aller Verbindungen als *.zip eingestellt. Ich habe folgendes Problem: Nach dem Entpacken habe ich eine Riesen-CSV Datei mit ca. 2G Mich interessieren ja erstmal nur meine eigenen Verbindungen. Also selektieren. Aus den ..zig Millionen Datensätzen bleiben für mich nur ein paar (..zig) tausend übrig. Das nur zur Erklärung. Zum Verarbeiten habe ich mir ein dBase/Clipper (Sorry, DOS-Mensch) Programmm geschrieben, das die CSV-Datei einliest, und die für mich wichtigen Datensätze selektiert. Hat geklappt; nachdem jedoch die Dateigrösse in den letzten Jahren extrem angestiegen ist, steigt mein Programm aus. Ich denke, es liegt an der Dateigrösse. Meine Idee: Das CSV-File in mehrere Teile spalten, die man ja dann nach und nach verarbeiten könnte. Wer hat eine, vielleicht auch andere, Idee? 73 Wilhelm PS: Alles läuft unter XP, bitte keinen Mecker diesbezgl.! Ja ich weiss, ich bin noch etwas von früher ;-)
Python Skript mit Regex? Sollte relativ einfach gehen.
Gast
#5233615
Nimm einfach eine aktuelle Programmiersprache wie java, python oder ähnliches...ließ die daten zeilenwweise und nicht als ganzes...fertig 2gb sind wirklich eine lächerliche größe 2017 ;)
Gast
#5233635
Unter Unix: unzip -p riesig.zip | grep dk4tj > dk4tj.csv "unzip -p" schreibt den Zip-Inhalt nach STDOUT, d.H es wird nicht temporär eine 2GB-Datei auf die Platte geschrieben. Das sollte auch das WinDOS unzip.exe können. Evtl. mit "unzip /p"? "grep dk4tj" sucht daraus nur die Zeilen aus, die "dk4tj" enthalten. -> was ähnliches bieten auch die Windows-Bordmittel. "find.exe"? "> dk4tj.csv" schreibt alle passenden Zeilen in eine neue Datei. Beachten: Header-Zeile fehlt, die kannst du selber leicht nachrüsten.
... oder awk. Das gibt es auch für Win*. Suche nach Gawk. Siehe z.B. Beitrag "Frage zu AWK"
Gast
#5233758
Thomas S. schrieb: > ... oder awk. Das gibt es auch für Win*. > Suche nach Gawk. Nicht nur awk/gawk, auch die oben erwähnten unzip & grep sowie diverse weitere Tool: http://gnuwin32.sourceforge.net
Das Filtern der CSV-Datei geht auch mit Windows-Bordmitteln, dazu muss man keine *nix-Kommandozeilentools installieren.
1 | |
gibt alle in riesig.csv enthaltenen Zeilen, die "blabla" enthalten, in
gefiltert.csv aus.
Das setzt natürlich voraus, daß die interessierenden Einträge so leicht
zu identifizieren sind.
findstr kennt aber auch reguläre Ausdrücke ("regex"), so daß sich damit
auch komplexere Filterkriterien konstruieren lassen.
https://technet.microsoft.com/en-us/library/bb490907.aspx
Gast
#5233861
Wilhelm S. schrieb: > Nach dem Entpacken habe ich eine Riesen-CSV Datei mit ca. 2G Wenn du die Datei unter DOS noch vollständig entpacken kannst, kannst du sie auch unter DOS weiter verarbeiten (im Sinne von: filtern). Das sollte logisch ein, oder? > Hat geklappt; nachdem jedoch die > Dateigrösse in den letzten Jahren extrem angestiegen ist, steigt > mein Programm aus. Sehr wahrscheinlich deshalb, weil schon die Originaldatei nicht mehr vollständig entpackt werden kann, das Ergebnis als irgendwo mittendrin einfach aufhört, weil das DOS-Limit von 2GB Dateigröße gerissen wurde. Es gibt also zwei Probleme: 1) Die Datei kann nicht mehr vollständig entpackt werden. 2) Dein eigenes Werk ist unfähig, mit "truncated input" korrekt umzugehen. Gute Software(tm) würde in diesem Fall einfach eine Fehlermeldung über eine illegale Datei-Struktur absondern, ansonsten aber alles (bis auf die letzte nur noch teilweise ausgepackte Zeile) korrekt verarbeiten. Du hast wohl nie gelernt, sowas zu schreiben... > Ich denke, es liegt an der Dateigrösse. Natürlich, die maximale Dateigröße unter DOS war schließlich zu keiner Zeit ein Geheimnis... > Meine Idee: Das CSV-File in mehrere Teile spalten Das hilft dir nicht wirklich. Das Problem tritt ja bereits bei der Erzeugung der Datei durch das Entpacken auf. Sie ist dann bereits kaputt, weil unvollständig. Alles, was dein Ansatz bringen könnte: Die Fehler in deinem eigenen Werk zu umschiffen. Ich persönlich würde dann aber eher mein eigenes Werk nachbessern. Schon aus Gründen der Programmierer-Ehre... Blöd bloß, dass das im konkreten Fall das Problem auch nicht wirklich lösen würde. Zwar könnte dann dein Programm wenigstens den entpackten Teil der Datei korrekt verarbeiten, aber es würde nach wie vor die unvollständige Zeile fehlen und auch alles, was danach noch kommt... Als einzige Möglichkeit unter DOS würde ich hier sehen: Von Dateiverarbeitung auf Streamverarbeitung umsteigen. Sprich: Entpacker sagen, dass er das Ergebnis nach stdout liefern soll (statt es in einer Datei abzulegen) und deinem eigenen Programm sagen, dass es stdin verarbeiten soll, statt einer Datei. Für einen auch nur halbwegs kompetenten Programmierer sind die nötigen Änderungen am Programm eine Sache von wenigen Minuten. An der Kommandozeile wäre der Aufruf dann in etwa so: entpacker quelldatei <option für "entpacke nach stdout"> | deinprogramm <option für "lies von stdin"> zieldatei Das "|" ist der Trick. Das ist eine Pipe, der Entpacker füttert seine Ausgabe über stdout dort hinein, dein Programm hingegen bekommt es über stdin. Das Schicke ist: für diese Pipe gibt es auch unter DOS keine Beschränkungen, sie kann unendlich lang werden. 2GB-Grenze adé... Sprich: dein nächstes Problem würde erst auftreten, wenn der Umfang des Teils der Datei, welcher dich interessiert, die 2GB-Grenze überschreitet. Das wirst du vermutlich aber nicht mehr erleben. Ich sehr wahrscheinlich auch nicht...
c-hater schrieb: > Als einzige Möglichkeit unter DOS würde ich hier sehen: Von > Dateiverarbeitung auf Streamverarbeitung umsteigen. Sprich: Entpacker > sagen, dass er das Ergebnis nach stdout liefern soll (statt es in einer > Datei abzulegen) und deinem eigenen Programm sagen, dass es stdin > verarbeiten soll, statt einer Datei. Das willst Du unter DOS hinbekommen? Vielleicht sollte der Threadstarter etwas mehr vom tatsächlich verwendeten Betriebssystem erzählen. Tatsächlich DOS? Oder nicht vielleicht doch nur ein DOS-Programm, das unter einem (mäßig aktuellen) Windows in der üblichen NTVDM läuft?
Gast
#5233999
Rufus Τ. F. schrieb: > Das willst Du unter DOS hinbekommen? Natürlich, oder siehst du da ein konzeptionelles Problem? Ich jedenfalls sehe keins. Piping unter DOS habe ich vor vielen Jahrzehnten schon erfolgreich benutzt. OK, ich müßte sicherlich meine DOS-Kennntnisse ganz erheblich auffrischen, um das heute auch wieder machen zu können, das meiste von dem Scheiß habe ich sicherlich mittlerweile vergessen. Aber ich habe meine alte Papierdoku aus dieser Zeit noch. D.h.: ich könnte mir das sogar auf dem Klo ooder in der Badewanne wieder anlesen. Wenn es denn mein Problem wäre und ich deshalb entsprechend motiviert wäre... Ganz sicher bin ich jedenfalls, dass es keine Limitierung der Pipelänge gab, denn schon einige der Anwendungen von damals(tm) rissen da locker die 2GB-Grenze innerhalb von Tagen und liefen dann viele Jahre am Stück... > Vielleicht sollte der Threadstarter etwas mehr vom tatsächlich > verwendeten Betriebssystem erzählen. Tatsächlich DOS? Das könnte zumindest keinesfalls schaden... > Oder nicht vielleicht doch nur ein DOS-Programm, das unter einem (mäßig > aktuellen) Windows in der üblichen NTVDM läuft? Würde meiner Meinung nach praktisch nix ändern. Höchstens, dass man das 2GB-DOS-Limit auf das 4GB-NT-FAT-Limit ausdehnen könnte. Aber selbst wenn das möglich wäre, wäre es nur eine Lösung für Arme, eben für Leute, die nicht wirklich programmieren können und immer nur das zusammefrickeln, was sie halt können...
c-hater schrieb: > Ganz sicher bin ich jedenfalls, dass es keine Limitierung der Pipelänge > gab, Magst Du mir erklären, wie das auf einem nicht-multitaskingfähigen "Betriebssystem" funktionieren soll? Ist ja nicht so, daß unter DOS das erzeugende und das empfangende Programm gleichzeitig laufen könnte - also muss der Inhalt der Pipe irgendwo zwischengespeichert werden, und wenn DOS eins nicht hat, dann RAM.
Gast
#5234032
Rufus Τ. F. schrieb: > Vielleicht sollte der Threadstarter etwas mehr vom tatsächlich > verwendeten Betriebssystem erzählen. Tatsächlich DOS? > > Oder nicht vielleicht doch nur ein DOS-Programm, das unter einem (mäßig > aktuellen) Windows in der üblichen NTVDM läuft? Wilhelm hat im Eingangspost bereits erwähnt, dass alles unter XP läuft...
Tom schrieb: > dass alles unter XP läuft... Hab' ich dann wohl übersehen, bzw. wurde von "Clipper" und DOS überblendet. Nun, wenn Wilhelm sich hier noch mal meldet, dann kann er ja vielleicht mehr über die benötigte Art der Filterung seiner CSV-Datei erzählen. Das ist ja inhaltlich etwas knapp: Wilhelm S. schrieb: > Mich interessieren ja erstmal nur meine eigenen Verbindungen. > Also selektieren. Eventuell genügt einer der genannten Kommandozeilenansätze (sei es mit grep, findstr oder was auch immer).
Rufus Τ. F. schrieb: > Das ist ja inhaltlich etwas knapp: Könnte es so aussehen: http://wsprnet.org/drupal/wsprnet/spots
1 | |
2 | |
3 | |
4 | |
Gast
#5234069
Rufus Τ. F. schrieb: > Magst Du mir erklären, wie das auf einem nicht-multitaskingfähigen > "Betriebssystem" funktionieren soll? Ist ja nicht so, daß unter DOS das > erzeugende und das empfangende Programm gleichzeitig laufen könnte - > also muss der Inhalt der Pipe irgendwo zwischengespeichert werden, und > wenn DOS eins nicht hat, dann RAM. Das ist eine intelligente Frage und ich muss zugeben, dass ich darauf im Moment keine Antwort weiss. Ich kann also aktuell nicht erklären, warum das damals so funktioniert hat, wie es funktioniert hat. Das mit dem begrenzten RAM ist dabei noch nichtmal das Problem, einen unendlichen FIFO kann man mit beliebig begrenztem RAM realisieren, notfalls mit einem einzigen Byte. Aber die Tatsache, dass pures DOS kein Multitasking-OS ist, läßt sich nicht wegdiskutieren und der beschriebene Ansatz funktioniert nur, wenn wenn Sender und Empfänger der Pipe parallel laufen können. D.h.: in meiner Erinnerung muss definitiv ein wichtiger Punkt bezüglich der damaligen Umgebung fehlen. Es kann definitiv zumindest kein pures DOS gewesen sein, soviel ist schonmal sicher. Andererseits bin ich sehr sicher, dass ich "unter DOS" programmiert habe. Ich versuche, den offensichtlichen Widerspruch anhand der noch vorhandenen Unterlagen aufzuklären...
Oder so: Testing was carried out on Windows 8 Pro. CSV Splitter is also available for Windows 7, Vista & XP. https://www.erdconcepts.com/dbtoolbox.html
Gast
#5234110
c-hater schrieb: > Aber die Tatsache, dass pures DOS kein > Multitasking-OS ist, läßt sich nicht wegdiskutieren und der beschriebene > Ansatz funktioniert nur, wenn wenn Sender und Empfänger der Pipe > parallel laufen können. Es wird aus einer Datei gelesen und direkt in eine andere geschrieben, das sollte DOS gekonnt haben?
Manfred schrieb: > Es wird aus einer Datei gelesen und direkt in eine andere geschrieben Nein, eine Pipe ist was anderes. Es geht nicht um
1 | |
sondern um
1 | |
Die Ausgabe von Programm1 wird durch die Pipe (|) an Programm2
übergeben.
("bla.txt" sei hier generischer Platzhalter für irgendwelche
Kommandozeilenargumente für "programm1")
Beitrag #5234122 wurde von einem Moderator gelöscht.
In MS-DOS sind Pipes über temporäre Dateien implementiert, deswegen nennt man sie auch Fake-Pipes Aber der TE hat ja Windows XP, da sollte es auch echte Pipes geben. Ob die |-Syntax in der Eingabeaufforderung diese tatsächlich nutzt, oder ob dort aus Kompatibilitätsgründen immer noch temporäre Dateien verwendet werden, weiß ich allerdings nicht.
Gast
#5234262
Wo kommen denn nun Pipes zum Einsatz?
1 | |
Löst das die selektions Aufgabe nicht? - Dass beim Entpacken u.U. die resultierende Datei nach 2GB abgewürgt wird ist doch eine Limitierung des Dateisystems. Also sollte es doch genügen die Arbeit auf einer mit fähigem Dateisystem eingerichteter Partition zu erledigen. Ja? NB: dass für mit Bordmittel bewältigbare Trivialaufgaben umständlich eigene, kaputte Programme geschrieben werden ist schon... "seltsam".
Gast
#5234268
> PS: > Alles läuft unter XP, bitte keinen Mecker diesbezgl.! > Ja ich weiss, ich bin noch etwas von früher ;-) Nein, XP (& DOS) sind für die Spätaufsteher. Früher[TM] gab es echte Computer und echte Programmierer
Gast
#5234351
Kommandozeile vor dem Frühstück für Alle! schrieb: > Früher[TM] gab es echte Computer und echte Programmierer Microsoft beschäftigt auch noch echte Programmierer. https://www.bleepingcomputer.com/news/microsoft/microsoft-appears-to-have-lost-the-source-code-of-an-office-component/ Hut ab!
Kommandozeile vor dem Frühstück für Alle! schrieb: > Wo kommen denn nun Pipes zum Einsatz? Lies doch einfach mal das, was "c-hater" vorgeschlagen hat. > Dass beim Entpacken u.U. die resultierende Datei nach 2GB abgewürgt wird > ist doch eine Limitierung des Dateisystems. Genau das würde seine Lösung nämlich umgehen, vorausgesetzt, daß beide Prozesse an den Enden der Pipe tatsächlich gleichzeitig arbeiten können. Um es zusammenzufassen:
1 | |
(vorausgesetzt, daß "unzip" auf diese Art und Weise aufgerufen auf stdout ausgibt)
Beitrag #5234394 wurde von einem Moderator gelöscht.
Hallo zusammen, da habe ich ja eine Lawine losgetreten, oje. Noch zur allgemeinen Info: Alles läuft in der DOS-Box von XP. Ich bleibe bei XP, weil man da noch einen Vollbildschirm im DOS-Fenster bekommt. Ja, so sieht es aus: > Timestamp Call MHz SNR Drift Grid Pwr Reporter RGrid km az > 2017-12-05 19:30 DL3NDR 0.475727 -27 0 JN59no 0.1 > EA5DOM-1 IM98xn 1514 220 > 2017-12-05 19:30 DH5RAE 0.475766 -12 0 JN68qv 0.5 > EA5DOM-1 IM98xn 1571 228 Datum und Zeit liegen jedoch im Unix-Format als ein Item vor und müssen noch entsprechend aufgebröselt werden; das ist aber kein Problem. Die Lösung ist 'Find' mit Umleitung in eine andere Datei. Von da komme ich schon weiter. Das *.zip-File wird ordentlich entpackt -> ca. 2,4G 'Find' hat dann auch nicht gemeckert, das Suchen hat aber einige Zeit gebraucht. Macht nix, als 'Rentier' habe ich ja Zeit genug. Bzgl. Programmieren: Ich bin zwar kein Profi, aber auch als Laie kann man ordentliche Arbeit abliefern. Für meine Apotheke habe ich in dBase/Clipper vor Jahren eine Anwendung geschrieben, die das Wichtigste für den Apothekenalltag erledigte, nämlich in einer Liste nachsehen zu können und Rezepte zu bedrucken. Mit diesem Programm ist 7 Jahre ohne Fehler und Mecker Geld verdient worden. Es waren am Schluss fast 400.000 Datensätze. Ca. 250.000 Zeichen Quellcode. Also so ganz unbedarft bin ich nicht. Was andere mit Excel erledigen, mache ich heute noch mit dBase im Handbetrieb. Geht auch. Ich danke euch allen für eure Tips; mein Problem ist damit gelöst. 73 Wilhelm PS: @C-Hater Ist dein Name Programm?
Gast
#5234594
Wilhelm S. schrieb: > PS: > @C-Hater > Ist dein Name Programm? Oh ja. Davon kannst du ausgehen.
Gast
#5234654
Wilhelm S. schrieb: > Hallo zusammen, > > da habe ich ja eine Lawine losgetreten, oje. Nicht doch, dies ist ein harmloser Verlauf. Nicht zuletzt dank Deiner gleich im Eröffnungspost ziemlich umfassenden Beschreibung. Schlicht mustergültig. > Die Lösung ist 'Find' mit Umleitung in eine andere Datei. > Von da komme ich schon weiter. > Das *.zip-File wird ordentlich entpackt -> ca. 2,4G > 'Find' hat dann auch nicht gemeckert, das Suchen hat aber einige > Zeit gebraucht. Do schau her, von wegen Tamtam um Pipes... :-) > Bzgl. Programmieren: > Ich bin zwar kein Profi, aber Ich gratuliere! Es freut mich sehr hie und da auch unter Anwendern welchen zu begegnen, die EDV als "El. Datenverarbeitung" begreifen UND umsetzen - entgegen dem Volkstrend "Ende Der Vernunft" welcher leider auch unter Profis grassiert! - - - > Noch zur allgemeinen Info: > Alles läuft in der DOS-Box von XP. Ich bleibe bei XP, weil > man da noch einen Vollbildschirm im DOS-Fenster bekommt. Wenn Du "so Einer" bist, lass Dir empfehlen in bash & GNU-tools zu schnuppern. M.M.n. wird es Dir gefallen. Migrationsstrategie: - erstmal unter XP mit CygWin starten (mit bloß dem Grundstock an core Pakete) - danach doch auf ein Linuxsystem wechseln (Zweitrechner m. *buntu), Terminal und/oder per [strg][alt][Fx] die Textkonsole nutzen. Bei "Heimweh" einfach das Paket dosbox einrichten: damit dürften auch die alten dBase/Clipper unter Linux laufen (meine Einschätzung vom Schiff aus, hab keine eigene handfeste Erfahrung mit dosbox) Ja, etwas Umgewöhnunsaufwand ist zu leisten. Mein Bauchgefühl gibt mir die Überzeugung dass dies VIEL Potential hat Dir zu gefallen; jedenfalls besser als irgendein Krampf per "modernem" WindowsXY.
Gast
#5234658
Wilhelm S. schrieb: > Noch zur allgemeinen Info: > Alles läuft in der DOS-Box von XP. Ich bleibe bei XP, weil > man da noch einen Vollbildschirm im DOS-Fenster bekommt. Dann probier mal folgendes: Lösung für Win7 (und wahrscheinlich auch höher): Win+R drücken -> im Fenster 'Ausführen' "cmd" eingeben -> Enter Rechtsklick auf die obere 'Rahmenleiste' (in der sich auch das Kreuz zum Schliessen befindet) -> 'Eigenschaften' anklicken Reiter Schriftart bzw Reiter Layout: Werte anpassen... vielleicht hilft's Dir ja irgendwie... ;-) Meine Einstellungen: Bildschirm-Auflösung: 1600 x 1200 Eigenschaften v. cmd.exe: Layout Fenstergrösse: Breite = 130 & Höhe = 68 Schriftart Grösse = 12 x 16
Gast
#5234702
Kommandozeile vor dem Frühstück für Alle! schrieb: > Wenn Du "so Einer" bist, lass Dir empfehlen in bash & GNU-tools zu > schnuppern. M.M.n. wird es Dir gefallen. Ist mir genauso gegangen, bin seit Jahren Linux-Fan, am liebsten auf der Konsole. Habe aber manchmal noch ein W2k und ein WXP in der VM laufen. Auch auf SBC bin ich jetzt "angesprungen", z.B. RaspberryPi bzw. noch lieber OrangePi. Meine Lieblingssprache ist jetzt Python. Falls Du bei Windows bleiben willst und eine vernünftige Konsole brauchst, probier mal ConEmu, die kann u.a. auch die schönen alten ANSI-Sequenzen (jaja ich weiss, W10 kann die auch wieder, aber wer will schon W10, wenn er Linux hat).
Gast
#5234732
damit der Wilhelm DK4tj noch mehr Lust auf bash/GNU-tools/Linux bekommen soll: (dieser Thread hat meine Neugierde auf WSPRNET angestachelt :-)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
Der Vorteil: ausser des Diskplatzes fuer die geholten Datenarchive und die wenigen extrahierten Datensaetze welche konkret interessieren wurde dank Pipes kein weiterer Diskplatz verwendet. Der Nachteil: das geht mit aus dem Ärmel geschuettelten Befehle dermassen schnell, dass jedes 'Rentier' in Stress kommt! Nix mer mit hab ja Zeit ;-) 73 de Stephan HB9ocq
Gast
#5234740
Noch ein Hinweis fuer die Interpretation der mit time ermittelten Zeiten. Von oben genommen:
1 | |
2 | |
3 | |
4 | |
5 | |
Diese Maschine hat ein C2D Prozessor (Core2Duo), also 2 Physische Rechenkerne mit je HT (Hyperthreading) Faehigkeit was unter optimalen Umstaende auf 4 Kerne rauskommt. real zeigt die "an der Wanduhr" verstrichene Zeit bis der Befehl durch ist user zeigt die Zeit welche Prozesse im Namen d. Users werkelten, vulgo Numbercrunching system zeigt die Zeit welche mit Systemaufrufe verbracht wurde, hier typ. Dateioperationen F: Warum ist nun user groesser als real (Wanduhrzeit)? Das kann doch gar nicht sein, oder? A: In der Zeit als Die "Wanduhrzeit" verstrich, wurden auf diversen Kerne Arbeiten gleichzeitig parallel abgearbeitet. Voila! 73 de Stephan HB9ocq
Gast
#5234761
> Dann probier mal folgendes: Lösung für Win7 (und wahrscheinlich auch > höher): Stimmt zwar, aber das bringt noch nicht bash + GNU-tools daher. (das zeigt nur in grösser wie eingeschränkt/mangelhaft CMD.EXE ist) Mit "wahrscheinlich auch" liegst richtig: es sind solche "nebensächliche Kleinigkeiten" welche von Win- zu Win-Varianten vom Hersteller allzuoft und unnötigerweise verändert werden. Solches vergrault einem die Lust am Umsteigen jedes verdammte Mal !! (bei mir letztlich zum Totalboykott) Nix gegen Neues und Änderungen: aber bitte im Kernbereich meiner Aufgaben UND mit deutlich ergiebigen Vorteilen. Nicht bei Pillepallekram der zu Stolpersteine/Ostersuche/Zeitfresser mutiert; das hat einfach wie gewohnt zu funktionieren. (nein, ich werde nicht Müde auf solchem herumzureiten)
Gast
#5234928
c-hater schrieb: > Ich versuche, den offensichtlichen Widerspruch anhand der noch > vorhandenen Unterlagen aufzuklären... Ich bin fündig geworden. Die Sache lief damals unter "Novell-DOS". Eine Art Multitasker-Aufsatz für MSDOS. War wohl sowas wie ein kastriertes Abfallprodukt der Novell "Netware"-Entwicklung für den kleinen Geldbeutel. Features: Keinerlei Netzwerk-Funktionalität, aber preemptives Multitasking für DOS-Prozesse und relativ unkomplizierte Nutzung von Speicher jenseits der damaligen DOS-Grenzen (ohne manuelle Konfigurationsorgien in config.sys und autoexec.bat.) Und, im Kontext dieses Threads, das Wesentliche: Tatsächlich echte Pipes...
Danke für die sachliche und fundierte Rückmeldung. Verschiedene dieser DOS-Multitasker hab' ich mir auch mal angesehen, es wurde dann für ein Projekt dann doch Windows 3.0 (auf einem 386). Das hatte den Vorteil der netten graphischen Oberfläche und schon damals recht weiten Unterstützung für Bildschirmtreiber. In meinem Fall musste eh' nur eine DOS-Task parallel zu einem Windows-Programm laufen, und die Kommunikation zwischen der DOS-Task und dem Windows-Programm lief über einen DOS-Devicetreiber (so ziemlich dem einzigen x86-Assemblerprogramm, das ich jemals geschrieben habe). Immerhin, der Kram(pf) funktionierte. Gott, was bin ich froh, das alles hinter mir zu haben. Aber ich schweife ab ...
Gast
#5238845
J. F. schrieb: > Python Skript mit Regex? Sollte relativ einfach gehen. ...damit diese konditionale Aussage nicht alleine im Raum stehen bleibt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Ob dies nun ein Memory-Hog ist beim durchstoebern von monströs grossen Ziparchive habe ich genausowenig überprueft wie ob es in Pipe-losen Umgebungen funktioniert (habe keine). Ich setzte blind auf Python: das gibt es auch fuer alte Windowsen und die verwendeten Module sys zipfile und re gibt es alle seit Py2 also duerften da keine Hindernisse im Wege stehen. Hier bei mir gezeugt und vollzogen unter Py2.7 auf Lubuntu 16.04.3 LTS. Python3 will diesen Code allerdings nicht: irgendwas mit "reo.search(..)" passt ihm nicht. Ich mag dem jetzt nicht nachgehen, man verzeihe mir.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
Die Ergebnisdateien sind md5sum nach bitidentisch mit denen oben per shell erzeugten. Vergleicht man die Laufzeiten, sieht man dass ein guter S(c)h(n)ellschuss durchaus Geschwindigkeitsvorteile haben kann - "komplexe" Pipes hin oder her. Es darf sich gerne jeder sportlich herausgefordert fuehlen, das kurze Pythonscript weiter zu beschleunigen oder Loesungen in anderen Sprachen ins Rennen zu schicken (diese sollten aber ebenfalls "auf einen Bierdeckel passen"). 73 de Stephan
usuru schrieb: > ANSI-Sequenzen (jaja ich weiss, W10 kann die auch wieder, aber wer will > schon W10, wenn er Linux hat). Da Windows10 inzwischen auch Linux kann, zumindest auf der Kommandozeile, müsste der Spruch eher umgekehrt lauten. Oliver
Gast
#5239762
Oliver S. schrieb: > usuru schrieb: >> ANSI-Sequenzen (jaja ich weiss, W10 kann die auch wieder, aber wer will >> schon W10, wenn er Linux hat). > > Da Windows10 inzwischen auch Linux kann, zumindest auf der > Kommandozeile, müsste der Spruch eher umgekehrt lauten. > > Oliver [ ] Bravo! Kaufst wohl auch 'ne ganze Zaunfabrik, um allen zu mehr Freiheit zu verhelfen...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.