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

Zeilen aus Text Datei nach Datum und Uhrzeit sortieren lassen

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

15.04.2013, aktualisiert 19:26 Uhr, 3630 Aufrufe, 11 Kommentare, 2 Danke

Abend,
Habe eine txt Datei mit rund 87000 Zeilen (bitte fragt nicht wo ich die her habe, brauche es für die schule).
Diese möchte ich jetzt nach Datum und Uhrzeit sortieren, weil die Werte zufällig verteilt sind.
Fängt mit 2004 an, geht dan 3 Monate 2005 und dan wider 2004 usw, alles unregelmäßig.

So sehen ein paar Beispiel Zeilen aus:
01.
 0:02:51	 1.01.2005	      0,80	    216,21	      0,08	     88,03	      4,12	     11,00	    -21,94 
02.
12:53:47	 5.01.2005	      1,29	    201,42	      0,09	     85,23	      1,57	     10,92	     12,97 
03.
22:12:48	21.12.2004	      0,23	    137,08	      0,08	     83,67	     -2,56	     11,26	    -26,11
Nach langem hin und her, habe ich es nun endlich hin bekommen, das zumindest Datum und Uhrzeit in einer einheitlichen vorm vorliegen:

01.
00:02:51	01.01.2005	      0,80	    216,21	      0,08	     88,03	      4,12	     11,00	    -21,94 
02.
12:53:47	05.01.2005	      1,29	    201,42	      0,09	     85,23	      1,57	     10,92	     12,97 
03.
22:12:48	21.12.2004	      0,23	    137,08	      0,08	     83,67	     -2,56	     11,26	    -26,11
Es handelt sich jeweils um 3 Zeilen, irgendwie wurde ein Zeilenumbruch eingefügt, der nicht da ist.
Also die erste null bei einstelligen werten wurde ergänzt.
Jetzt hänge ich daran, die werte sortiert wider in einer txt Datei abzulegen.
Das Sortieren kann gerne mehre Stunden dauern, ist mir relativ egal, muss nur einmal durchlaufen werden, sollte dan aber auch schon gleich das richtige Ergebnis liefern.
Die Zeilen werden folgendermaßen eingelesen:

01.
			BufferedReader in = new BufferedReader(new FileReader("Pfad")); 
02.
			String zeile = null; 
03.
			String str = ""; 
04.
			String str1 = ""; 
05.
			String str2 = ""; 
06.
			while ((zeile = in.readLine()) != null) { 
07.
               str = zeile.substring(0, 20); 
08.
                
09.
                
10.
                StringTokenizer s = new StringTokenizer(str, "	", false); 
11.
 
12.
                 
13.
				int i; 
14.
				 
15.
 
16.
				i = 0; 
17.
				 
18.
				while(s.hasMoreTokens()) { 
19.
	                str1 = s.nextToken(); 
20.
	                str2 = s.nextToken(); 
21.
					System.out.println(str2 + " " + str1);
unten das mit str1 und 2 war ein versuch die werte andersherum anzuordnen, also falls das lohnenswert ist, dies liegt bereits vor.
Am Ende soll aber die gesamte Zeile in einer neuen txt Datei stehen.
Hoffentlich kann mir da einer von euch helfen.
zerbrüte mir seit Stunden den Kopf über dieser Datei.

Schonmal Danke für eine Antwort
Mfg
Power-Poler
Mitglied: christianlindloff
15.04.2013 um 19:33 Uhr
Hallo Power Poler,

Ich habe leider keine Ahnung vom Programmieren. Aber eine andere Idee wäre es die Daten in eine Excel Tabelle zu kopieren und dort weiter aus zu werten.

Liebe Grüße
Christian
Bitte warten ..
Mitglied: Power-Poler
15.04.2013 um 19:47 Uhr
Das ist genau mein Problem, wenn ich Excel (ObenOffice Version) die Daten gebe, werden sie nicht richtig von einander getrennt in spalten abgelegt.
Uhrzeit und Datum Stehen in einer Spalte und der Rest immer so mit 5 Spalten Abstand zueinander dahinter.
Außerdem wüste ich nicht, wie ich dort einen Anweisung gegen kann zur Sortierung der Daten.
Achso, brächte von einer Zeile sowiso nur die Werte:
Datum
Uhrzeit
und den dritten wert von rechts, der Rest kann, wenn möglich gleich raus gefiltert werden.
Bitte warten ..
Mitglied: 76109
15.04.2013 um 20:24 Uhr
Hallo Power-Poler!

Ersetze alle Leerzeichen durch "", dann bleiben nur noch Tabs als Trennzeichen übrig

Gruß Dieter
Bitte warten ..
Mitglied: Power-Poler
15.04.2013 um 20:33 Uhr
Den zustand habe ich jetzt, aber OpenOffice kann damit nichts anfangen.
Auch sortiert bekomme ich sie in OpenOffice nicht.
Bitte warten ..
Mitglied: 64748
15.04.2013, aktualisiert um 20:38 Uhr
Guten Abend,

hast Du denn eine Vorgabe, womit Du das machen sollst?

Sinnvoll ist wie christianlindloff oben schreibt Excel wenn man es denn unter Windows macht.

Oder man hat Linux und macht es mit Perl (oder einer anderen Skriptsprache).

Das Vorgehen ist klar, zunächst sorge dafür, dass jeder Datensatz in eine Zeile kommt. Dann kannst Du das mit Excel öffnen. Du musst nur dafür sorgen, dass Excel weiß, welches Zeichen als Trenner zwischen den Spalten zu nehmen ist.

Ich hab mir das gerade mal im Editor angesehen, im Moment sind zwischen den Spalten immer genau ein Tab gefolgt von mehreren Leerzeichen. Sinnvoll wäre es, zunächst
sed -n 's/\t\ \+/;/g' < Dateinname
(geht auch im Editor (kommt auf den Editor an)) diese Zeichen durch Semikolon zu ersetzen, das wird von Excel problemlos als Spaltentrenner verarbeitet.

Sortieren in Excel kannst Du nach einer beliebigen Spalte, also hier die zweite.

Markus

PS: das geht auch mit OpenOffice
Bitte warten ..
Mitglied: Power-Poler
15.04.2013 um 20:49 Uhr
habe jetzt eine Batch erstellt mit dem Inhalt:
@echo off &setlocal

sed -n 's/\t\ \+/;/g' < G.txt
pause
bekomme jedoch jetzt eine Fehlermeldung das sed unbekannt wäre. "Der Befehl "sed" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Drücken Sie eine beliebige Taste . . ."

Sorry falls ich dich falsch verstanden habe.

Habe jetzt Notepad++ gemacht (hat auch schon ewisch gedauert) OpenOffice öffnet es jetzt normal.
Wie kann ich jetzt in OpenOffice die Werte sortieren lassen?
Bitte warten ..
Mitglied: 64748
15.04.2013 um 20:58 Uhr
Das ist auch für Linux, sed ist der stream-Editor. Sowas gibt's in Windows nicht. Von Batch hab ich keine Ahnung.

Wenn Du einen Editor hast, der mit Regulären Ausdrücken umgehen kann, dann kannst Du mit dem Code
s/\t\ \+/;/g
diese Ersetzung in der Datei machen. Das geht aber auch in jedem anderen Editor.

Markus
Bitte warten ..
Mitglied: bastla
15.04.2013 um 21:33 Uhr
@ hmarkus
Sowas gibt's in Windows nicht.
... aber natürlich für Windows, zB http://gnuwin32.sourceforge.net/packages/sed.htm

Grüße
bastla
Bitte warten ..
Mitglied: 64748
15.04.2013 um 21:52 Uhr
Ja klar, ich entsinne mich, dass wir vor einigen Wochen einen Thread hatten, wo sed.exe nicht wie erwartet funktionierte. Ich hab vor einigen Tagen mal mobaxterm ausprobiert, das basiert auf cygwin und stellt ein Linux-Terminal in Windows zur Verfügung. Sehr empfehlenswert.

Danke @bastla für den Hinweis.

Markus
Bitte warten ..
Mitglied: 64748
15.04.2013 um 21:57 Uhr
Habe jetzt Notepad++ gemacht (hat auch schon ewisch gedauert) OpenOffice öffnet es jetzt normal.
Wie kann ich jetzt in OpenOffice die Werte sortieren lassen?
Daten -> Sortieren.... und dann den Schlüssel wählen.

Markus
Bitte warten ..
Mitglied: 64748
16.04.2013, aktualisiert um 09:58 Uhr
Hier noch ein Einzeiler in mehreren Zeilen
sed -n 's/\t\+\ \+/;/gp' < text.txt |  
sed 's/;\([0-9]\)\(.[0-9\{2\}.[0-9]\{4\}\)/\ 0\1\2/p' |  
uniq |  
sed -n 's/\([0-9]\{1,2\}\).\([0-9]\{2\}\).\([0-9]\{4\}\)/\3.\2.\1/p' |  
sort -t ';' -k 2 |  
sed -n 's/\([0-9]\{4\}\).\([0-9]\{2\}\).\([0-9]\{2\}\)/\3.\2.\1/p'

dabei ist text.txt die Datei mit den Daten. Es funktioniert nach dem Prinzip der Schwartz-Transformation. Nach dem Ersetzen von Tabs uns Leerzeichen durch Semikolon werden zunächst im Datum alle Tage zweistellig gemacht.
Danach werden tag/monat/jahr in jahr/monat/tag vertauscht.
Dann wird nach dem zweiten Feld sortiert.
Und im letzten Schritt die Vertauschung im Datum wieder Rückgängig gemacht.

Sollte auch in cygwin oder mobaxterm auf Windows laufen.

Markus

Edit: in mobaxterm muss man es anders schreiben. Z.B. im ersten Ausdruck [\t ]* für eine Folge von Tabs oder/und Leerzeichen.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Doppelte Zeilen in Text-Datei löschen

gelöst Frage von reckheimBatch & Shell15 Kommentare

Hallo ich schreibe lange Übersetzungsprogramme in FoxPro in unten folgender Text-Datei-Form. Die Datei ist allerdings durch Zusammenführung verschiedener Versionen ...

Windows Server

Windows Updates nach Datum sortieren

Frage von RG2525Windows Server2 Kommentare

Hallo, Ich muss auf einem Windows Server 2008 R2 ca. 130 ausstehende Updates installieren. Alle Updates auf einmal zu ...

Batch & Shell

(Batch) Datum Sortier-Mechanismus

gelöst Frage von clragonBatch & Shell19 Kommentare

Hallo zusammen. Ich bin schon etwas länger am Batch schreiben, und war schon oft uneingeloggt hier, und jetzt hab ...

VB for Applications

Textdatei zeilenweise nach Datum sortieren

gelöst Frage von GurkenhobelVB for Applications2 Kommentare

Hallo Gemeinde, mehrere umfangreiche Textdateien, in denen zeilenweise wichtige Daten und Termine eingetragen sind, sollen zeilenweise nach dem Datum ...

Neue Wissensbeiträge
Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 30 MinutenMicrosoft

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 18 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 1 TagiOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...