luckyb
Goto Top

Per Batch bestimmte (unbekannte) Textteile aus Textdatei entfernen

Hallo zusammen.
Erstmal ein großes Lob, habe in diesem Forum schon sehr oft Hilfe für meine Fragestellungen gefunden,
insbesondere Dank an Bastla, der Batch-Gott face-smile, aber auch an alle anderen.
Nun komme ich bei einer Frage nicht weiter und hab auch hier im Forum bzw. google nichts passendes gefunden.
Falls die Frage doch schon mal behandelt wurde, dann sry, hab es echt nicht gesehen.

Folgendes Problem :

Ich habe eine Textdatei, die bisher soweit formatiert wurde, daß der Inhalt in folgender Form vorliegt :
Wie Ihr sehen werdet, handelt es sich um eine Ban-Liste eines GameServers, also ist die Liste mal länger
und mal kürzer.

78.179.120.33,Player1,Admin1,151.47.16.249,[30/7/2009 19:50:16]
213.6.67.246,Player2,~AutoBan,Banned for using a aimbot hack[30/7/2009 18:1:17]
18.49.147.213,Player3,~AutoBan,Banned for using a shooting while stung hack[31/7/2009 0:59:36]
76.17.18.210,Player4,Admin2,65.123.16.24,[30/7/2009 19:50:16]
41.200.67.132,Player5,~AutoBan,Banned for using a shooting while stung hack[31/7/2009 2:35:21]
204.172.185.21,Player6,Admin3,65.123.16.24,[30/7/2009 19:50:16]

Das Problem ist nun, das ich die IP's der Admins die hier in der Liste auftauchen, raushaben möchte.
Also in Zeilen 1, 4 und 6 soll der Block mit der IP nach "Admin1" zB gelöscht werden, daß Datum danach aber nicht,
so daß die Liste später mal so aussehen sollte :

78.179.120.33,Player1,Admin1,[30/7/2009 19:50:16]
213.6.67.246,Player2,~AutoBan,Banned for using a aimbot hack[30/7/2009 18:1:17]
18.49.147.213,Player3,~AutoBan,Banned for using a shooting while stung hack[31/7/2009 0:59:36]
76.17.18.210,Player4,Admin2,[30/7/2009 19:50:16]
41.200.67.132,Player5,~AutoBan,Banned for using a shooting while stung hack[31/7/2009 2:35:21]
204.172.185.21,Player6,Admin3,[30/7/2009 19:50:16]

Ich hab es erstmal mit Sed versucht und folgender Zeile :

Sed -e "s/"\,.*\,\["/"\,\["/g;"

Aber dabei löscht er leider alles aus der Zeile bis zum ersten Komma von links, es sieht also so aus dann :

78.179.120.33,[30/7/2009 19:50:16]

Irgendwie komme ich jetzt nicht weiter, hab schon verschieden Kombinationen ausprobiert aber ergebnislos.
Ist vielleicht ein Denkfehler drin ?
Oder sollte man es besser nicht per Sed machen, vielleicht besser mit einer For Schleife und der Delim Funktion ?
Man könnte auch vorher diese Banliste noch anders formatieren, so daß zB. jeder Block, auch in den Zeilen mit "Autoban",
per Komma getrennt wird.

Bin für jede Hilfe sehr dankbar.

Gruß, LuckyB.

Content-Key: 125615

Url: https://administrator.de/contentid/125615

Printed on: April 25, 2024 at 19:04 o'clock

Mitglied: 81825
81825 Sep 23, 2009 at 14:33:09 (UTC)
Goto Top
Hi,

probiere es doch mal so, nur als Beispiel:
@echo off & setlocal enabledelayedexpansion
set OrgLine=78.179.120.33,Player1,Admin1,151.47.16.249,[30/7/2009 19:50:16]

For /L %%i in (100,-1,1) do if "!OrgLine:~%%i,1!" == "[" set NewLine=!OrgLine:~0,%%i!  

@echo %NewLine%
pause
Member: bastla
bastla Sep 23, 2009 at 17:03:40 (UTC)
Goto Top
Hallo LuckyB und willkommen als Mitglied, hallo greypeter!

Soferne jede Zeile mit einer eckigen Klammer endet, könnte das (mit Direkteingabe an der Kommandozeile) so gehen:
for /f "tokens=1-5 delims=," %a in (BanList.txt) do @(echo %d|findstr /e "]">nul&&echo %a,%b,%c,%d||echo %a,%b,%c,%e)>>BanListNew.txt
Im Batch wäre für jedes %a bis %e jeweils die Schreibweise mit doppelten Prozentzeichen zu verwenden.

Grüße
bastla

P.S.: Ein kleine Korrektur wäre noch anzubringen face-wink:
insbesondere Dank an Bastla Biber, den Batch-Gott face-smile, aber auch an alle anderen.
Member: Biber
Biber Sep 23, 2009 at 20:15:37 (UTC)
Goto Top
<OT>
@bastla
Zitat von @bastla:
P.S.: Ein kleine Korrektur wäre noch anzubringen face-wink:
> insbesondere Dank an Bastla Biber, den Batch-Gott face-smile, aber auch an alle anderen.

Was würde es mir nützen, ein Gott zu sein, wenn ich trotzdem dauernd rechts überholt werde.... face-wink

Außerdem: der einzige Experte bin in diesem Seitenarm des Forums nun wahrlich nicht, Kollege.

Lass uns lieber dieses Zitat anwenden
Sobald man in einer Sache Meister geworden ist, soll man in einer neuen Schüler werden.
Gerhart Hauptmann, deutscher Schriftsteller

Grüße
Biber

</OT>
Member: bastla
bastla Sep 23, 2009 at 20:23:46 (UTC)
Goto Top
[OT]
@Biber
Sobald man in einer Sache Meister geworden ist, soll man in einer neuen Schüler werden.
Was ist demnach Dein nächstes Betätigungsfeld? face-wink

Grüße
bastla
[/OT]
Mitglied: 81825
81825 Sep 23, 2009 at 20:27:48 (UTC)
Goto Top
<OT>
Vielleicht steigt er jetzt um auf blutjunge, dunkelblonde Praktikantinnen *gg
</OT>
Member: bastla
bastla Sep 23, 2009 at 20:29:51 (UTC)
Goto Top
[OT]
@81825
Und Du meinst, da würde er als Schüler anfangen ... face-wink

Grüße
bastla
[/OT]
Mitglied: 81825
81825 Sep 23, 2009 at 20:32:12 (UTC)
Goto Top
<OT>
@bastla
Das kann man alles nicht wissen. face-big-smile

Es jibt sone und solche, und denn jibt es noch janz andere, aber det sind die Schlimmsten

Grüße
greypeter
</OT>
Member: LuckyB
LuckyB Sep 24, 2009 at 10:06:46 (UTC)
Goto Top
Hallo nochmal.
Vielen Dank erstmal für die Lösungsansätze.
@81825:
Hm ich glaube mit der Lösung bin ich nicht so gut bedient, da die Banliste ja dynamisch ist,
die IP's und Namen der Spieler und der Admins ändern sich also ständig. Nur der Aufbau der Zeilen
bleibt immer gleich, und die Banliste ist wie gesagt immer mal unterschiedlich lang, es können auch mal
Zeilen doppelt oder mehrfach vorkommen, sry falls die Info gefehlt hatte.
Also müßte ja immer die Variable "Orgline" passend deklariert werden.
@bastla
vielen Dank, mit der Lösung funktioniert es super. Werde gleich mal dran weiterarbeiten
die Banliste auf unsere Site zu bekommen.

lol, ich hab's irgendwie geahnt, daß ich mit dem "Batch-Gott" möglicherweise was lostrete,
aber es war nur für mich persönlich gesprochen, anteilig gesehen hab ich häufiger mit bastla's
Antworten hier im Forum eine Lösung gefunden, aber will da niemandem etwas absprechen.
Auch Biber ist sehr oft mit sehr guten Antworten hier vertreten, das stimmt.

Ok dann vielen Dank nochmal, werd mich erstmal weiter an die Banliste machen, kann ja mal,
falls Interesse besteht, hier einen Link zum späteren Endergebnis posten. Wenn die Liste dann
auf unserer Seite vernünftig abrufbar/einsehbar ist.
Mitglied: 81825
81825 Sep 24, 2009 at 10:18:42 (UTC)
Goto Top
Hallo, LuckyB,

es macht mir überhaupt nichts aus, dass du glaubst, mein Vorschlag könnte dir nicht helfen. Des Menschen Glaube ist sein Himmelreich. face-smile
Meine Vorschläge gehen immer davon aus, dass der Fragesteller in der Lage ist, sich selbst etwas zurechtzufummeln, sind also als Hilfe zur Selbsthilfe gedacht.
Bastla postet immer (oder meistens) fertige Lösungen und fördert dadurch imo die Bequemlichkeit. Ob das nun sinnvoll ist, lasse ich mal offen. face-wink
Member: LuckyB
LuckyB Sep 24, 2009 at 11:35:57 (UTC)
Goto Top
Hey,
bei bastla's Lösung musste ich aber auch ganz schön rumfummeln...
schließlich waren ja noch die doppelten Prozentzeichen im Batch einzufügen,
und die Pfad- bzw. Dateinamen haben ja auch gar nicht gestimmt .... face-smile