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 in txt mit Batchskript aussortieren

Mitglied: Magnuts

Magnuts (Level 1) - Jetzt verbinden

14.07.2010, aktualisiert 16:38 Uhr, 3363 Aufrufe, 11 Kommentare

Hallo zusammen,

Ich hab ein kleines Problem und würde mich über euere Hilfe freuen.

Das Ausgangsdokument um das es geht, behinhaltet etwa folgendes:

010-070200|Lorem ipsum dolor sit amet|
010-030160|consetetur sadipscing elitr|
020-070100|sed diam nonumy eirmod tempor|
010-070200|Lorem ipsum dolor sit amet|
020-070100|invidunt ut labore et dolore magna aliquyam erat|
020-040110|Stet clita kasd gubergren|
010-070100|sed diam voluptua|
010-030160|consetetur sadipscing elitr|

Mein Wunsch ist es nun, dieses Dokument mit Hilfe einer Batchdatei zu sortieren. Und zwar sollten Zeilen,
die mit der gleichen Nummer anfangen z.B. 010-070200, aus der Datei gelöscht werden (nur die Duplikate sollen gelöscht werden).
Wichtig ist, dass am Ende die Reihenvolge der Zeilen in der sie ursprünglich in dem Dokument standen weiterhin beibehalten wird.

Das heißt, dass das Dokument nach der durchlauf der Batch folgendermaßen aussehen sollte:

010-070200|Lorem ipsum dolor sit amet|
010-030160|consetetur sadipscing elitr|
020-070100|sed diam nonumy eirmod tempor|
020-040110|Stet clita kasd gubergren|
010-070100|sed diam voluptua|

Ich hoffe mir kann jemand bei dem Problem behilflich sein!

Danke und Gruß

Magnuts
Mitglied: 60730
14.07.2010 um 16:33 Uhr
Moin,

  • kennst du sort /?
  • ist der Aufbau der Datei immer ???-??????|xyz?

Wenn ja - Lösung einfach

Gruß
Bitte warten ..
Mitglied: Magnuts
14.07.2010 um 16:53 Uhr
Hallo TimoBeil,

Du hast recht, die Überschrift war wirklich schlecht gewählt!

Die Zahl am Anfang einer Zeile besteht immer aus 10 Zeichen.
Im Endeffekt sollte das Skript das File durchlaufen und alle Zeilen, in der die ersten 10 Zeichen schon einmal im Dokument vor kamen löschen.

Bei einem sort /+10 werden doch die Zeilen anhand der ersten 10 Zeichen verglichen und anschließend sortiert. Stimmt das soweit?
An sich wäre dies, das was ich brauche, doch sollte, wie erwähnt die Reihenfolge nicht verändert werden.

Entschuldigung für die anfänglichen Fehler meinerseits.

Gruß
Magnuts
Bitte warten ..
Mitglied: LotPings
14.07.2010 um 17:02 Uhr
Hallo Magnuts,
geht viel einfacher auch ohne sortieren. (wenn auch nicht sehr effizient)

Die For Schleife trennt die Eingabezeile am | und prüft vor dem Schreiben in die neue Datei ob die Zahl dort schon vorkommt.
Wenn nicht, wird die aktuelle Zeile neu zusammengebaut und geschrieben.

01.
:: Magnuts.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
:: LotPings  administrator.de 2010-07-14 
03.
@echo off & setlocal EnableDelayedExpansion 
04.
Set Dok="Ausgang.txt" 
05.
Set Neu="Neu.txt" 
06.
Type NUL > %Neu% 
07.
For /F "Usebackq Tokens=1,2 delims=|" %%A in ( %Dok%  
08.
  ) Do Findstr "%%A" %Neu% >NUL 2>&1 || >>%Neu% Echo.%%A^|%%B^|
Das anschließend notwendige Umbenennen überlasse ich dir.

Gruß
LotPings
Bitte warten ..
Mitglied: 60730
14.07.2010 um 17:36 Uhr
Zitat von LotPings:
Hallo Magnuts,
geht viel einfacher auch ohne sortieren. (wenn auch nicht sehr effizient)
@ lot - so einfach ist wohl nicht - die | gehören wohl zum Blindtext und nicht zur Aufgabe.
deswegen schrub ich ja "Lösung einfach" - aber im Moment hab ich was anderes um die Ohren...

Gruß
Bitte warten ..
Mitglied: LotPings
14.07.2010 um 17:44 Uhr
Zitat von 60730:
@ lot - so einfach ist wohl nicht - die | gehören wohl zum Blindtext und nicht zur Aufgabe.
deswegen schrub ich ja "Lösung einfach" - aber im Moment hab ich was anderes um die Ohren...
Stimmt du hast ja senkrecht

Am Prinzip ändert es aber nichts:

01.
:: Magnuts2.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
:: LotPings  administrator.de 2010-07-14 
03.
@echo off & setlocal EnableDelayedExpansion 
04.
Set Dok="Ausgang.txt" 
05.
Set Neu="Neu.txt" 
06.
Type NUL > %Neu% 
07.
For /F "Usebackq delims=" %%A in ( %Dok%  
08.
  ) Do Set "Line=%%A"&Findstr "!Line:~0,10!" %Neu% >NUL 2>&1 || >>%Neu% Echo.%%A
Gruß
LotPings
Bitte warten ..
Mitglied: Magnuts
15.07.2010 um 14:14 Uhr
Zitat von 60730:
@ lot - so einfach ist wohl nicht - die | gehören wohl zum Blindtext und nicht zur Aufgabe.
deswegen schrub ich ja "Lösung einfach" - aber im Moment hab ich was anderes um die Ohren...

Gruß

Zum Blindtext gehört es nicht direkt. Ich habe den Inhalt der txt sehr vereinfacht, um die Lösung dann selbstständig anzupassen.
Wahrscheinlich gestaltet sich das Problem dann aber doch etwas schwieriger, hier eine Zeile aus dem Dokument (die Pipes gehören tatsächlich in die Zeile):

010-070200|TEXT|text|text|||||||||||||||Text|

Der Aufbau ist folgender:
10 Stellen -> Nummer, Pipe,Text, Pipe, Text, Pipe, Text, 15 x Pipe, Text, Pipe

d.h. nach 19 x Pipe kommt immer die nächste Zahl (in der nächsten Zeile)

Danke und Gruß
Magnuts
Bitte warten ..
Mitglied: LotPings
15.07.2010 um 14:46 Uhr
Hallo Magnuts,
Ich versuche das mal in eine akzeptable Form zu übersetzen:

Liebe Leute vielen Dank für Eure Mühe, ich war wohl zu
[ _] blöd , [_] dumm, [_] ungschickt, [_] unerfahren - mein Problem von Anfang an präzise zu beschreiben,
und es tut mir Leid unnötigen Aufwand verursacht zu haben.

Die Batche funktionieren so nicht,
könnt ihr mir bitte nochmal unter Berücksichtigung der erst jetzt nachgereichten Fakten eine Lösung erarbeiten?

Falls das deine Zustimmung findet lass es und wissen .. und Tschüss LotPings ( es war/ist eine heiße Woche )
Bitte warten ..
Mitglied: Magnuts
16.07.2010 um 10:47 Uhr
Zitat von LotPings:
Liebe Leute vielen Dank für Eure Mühe, ich war wohl zu
[ _] blöd , [_] dumm, [_] ungschickt, [_] unerfahren - mein Problem von Anfang an präzise zu beschreiben,
und es tut mir Leid unnötigen Aufwand verursacht zu haben.

Die Batche funktionieren so nicht,
könnt ihr mir bitte nochmal unter Berücksichtigung der erst jetzt nachgereichten Fakten eine Lösung erarbeiten?

Ja, das findet Zustimmung meinerseits, [x]ungeschickt und [x]unerfahren würden an dieser Stelle meiner Meinung nach gut passen.

Tut mir Leid, wegen dem unnötigen Aufwand für euch. Ich dachte dass ich die Aufgabe etwas vereinfachen kann, aber im endeffeckt hab ich damit eine ganz andere Aufgabenstellung erzeugt. Ich bitte euch trotz den Missverständnissen und Fehlern meinerseits, mir eine kleine Hilfestellung zu dem Problem zu geben.

Gruß
Magnuts
Bitte warten ..
Mitglied: LotPings
16.07.2010 um 11:23 Uhr
Hallo Magnuts,

Problem bei den bisherigen Batchversionen ist, das die Pipezeichen Escaped werden müssen, bei nur 2 kann man die nachbilden. Bei mehreren muss man das per Stringersetzung machen.
01.
:: Magnuts3.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
:: LotPings  administrator.de 2010-07-16 
03.
@echo off & Setlocal EnableDelayedExpansion 
04.
set Prompt=$G 
05.
Set Dok="Ausgang.txt" 
06.
Set Neu="Neu.txt" 
07.
Type NUL > %Neu% 
08.
For /F "Usebackq delims=" %%A in ( %Dok%  
09.
  ) Do Set "Line=%%A"&Findstr "!Line:~0,10!" %Neu% >NUL 2>&1 || CAll :LineOut 
10.
Goto :eof 
11.
:LineOut 
12.
Set "Line=%Line:|=^|%" 
13.
>>%Neu% Echo.%Line%
Gruß
LotPings
Bitte warten ..
Mitglied: Magnuts
23.07.2010 um 13:01 Uhr
Hallo LotPings,

Danke für deine Hilfe, hab das Problem in Griff bekommen! Läuft jetzt alles wie gewollt :D

Gruß
Magnus
Bitte warten ..
Mitglied: LotPings
23.07.2010 um 13:15 Uhr
Hallo Magnuts,

so schön es ist, wenn ein Thema erledgt abgehakt werden kann, noch besser wäre es,
wenn du beschreibst was und wie dir Deine Lösung gelungen ist - Ratsuchende können es dann vielleicht auch nachvollziehen.

Gruß
LotPings
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mit Batch Zeilen aus TXT modifizieren
gelöst Frage von chef1568Batch & Shell4 Kommentare

Hallo zusammen, leider konnte ich mit den bisherigen Threads mein Problem bisher nicht lösen. Problemstellung: In einer Textdatei sind ...

Batch & Shell

Zeile mit Sonderzeichen in txt einfügen

gelöst Frage von FaysaxBatch & Shell1 Kommentar

Hallo miteinander, ich habe folgendes Problem: Ich habe eine xml Datei in eine txt umgewandelt. Nun möchte ich am ...

Batch & Shell

Letzte Zeile einer .txt in eine andere .txt ausschneiden per Batch

gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo zusammen, zu meinem obrigen Thema habe ich leider nur in Richtung löschen und nicht in Richtung ausschneiden etwas ...

Microsoft Office

In Excel Vertreter aussortieren

Frage von ChristianPollakMicrosoft Office2 Kommentare

Hallo liebes Forum liebe Mit-Administratoren, erstmal versuche ich mein Problem zu beschreiben: Ich bekomme immer Excel Dateien mit Kundendaten. ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 5 StundenGoogle Android2 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 5 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 8 StundenMicrosoft3 Kommentare

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 1 TagWindows 10

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

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server39 Kommentare

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

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 ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing18 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

CPU, RAM, Mainboards
32 gb RAM zu wenig?
Frage von pcguyCPU, RAM, Mainboards13 Kommentare

Hallo zusammen, mein PC verfügt über 32GB Ram. Nun kriege ich bei grossen Dateien im Illustrator die Fehlermeldung das ...