• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[Windows 10] Textdatei Zeilen löschen Batch

M315T3R

sglatschtglei...

Registriert
14 Juli 2013
Beiträge
3.013
Ort
Bier
Moin Moin!

Ich habe eine *.txt Datei mit ca. 50.000 Wörten. Jedes Wort auf einer Zeile. Es ist eine Passwortliste.

Das Problem ist, ich möchte alle Wörter mit weniger als 8 Zeichen und mit mehr als 15 Zeichen löschen.

Hat da jemand eine Idee?

THX!
 
Zuletzt bearbeitet:

M315T3R

sglatschtglei...

Registriert
14 Juli 2013
Beiträge
3.013
Ort
Bier
  • Thread Starter Thread Starter
  • #2
Gerade mit Wildcards getestet - mit Notepad und Ultraedit.
******** konnte nicht gefunden werden. :(
 

Timon3

Team ModMii

Registriert
17 Juli 2013
Beiträge
499
Muss es Batch sein? Mit Node könnte man das in wenigen Zeilen lösen.
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
898
Ich würde (wenn ich es denn unter Windows machen müsste) wie folgt vorgehen:
Notepad++
Dort
suchen -> hervorheben (lesezeichen setzen, reguläre ausdrücke)->^.{8,15}$

suchen -> lesezeichen -> zeilen ohne lesezeichen löschen.
 

KcDaRookie

Temporär Suspendiert :D

Registriert
14 Juli 2013
Beiträge
401
Wenn du AHK hast geht dieses Script. Die Datei input.txt benennen und im selben Ordner haben beim ausführen:
[src=autoit]#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

Loop, read, input.txt
{
if StrLen(A_LoopReadLine) > 7 && StrLen(A_LoopReadLine) < 15
FileAppend,
(
%A_LoopReadLine%

), output.txt
}[/src]

Am Ende hast du dann die gefilterte output.txt, die Originale bleibt unberührt.
Die letzte Zeile ist eine leere, liegt an der Natur des Scripts.

Ich hab dir das Script mit der AHK.exe mal angehangen.
Ansonsten gibts AHK hier: https://autohotkey.com/download/
 

Anhänge

  • trim.zip
    413,6 KB · Aufrufe: 120

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.730
Ort
in der Zukunft
Hier 2 Lösungen in Powershell - das geht in jedem aktuellen Windows und ist deutlich flotter und schöner als Batch ;)

Lösung 1 ist etwas simpler:

[src=powershell](Select-String -Path C:\uniqpass.txt -Pattern '.{8,15}').Line | Set-Content -Path c:\out.txt[/src]

Diese Lösung benötigt für ~2Mio Passwörter (ca. 20mb) 55 Sekunden

Lösung 2 ist leicht umfangreicher aber schneller:

[src=powershell]$out = New-Object System.Collections.Generic.List[System.Object]
foreach ($line in [System.IO.File]::ReadAllLines('C:\uniqpass.txt')) {
if ($line -match '.{8,15}') {$out.Add($line)}
}
Set-Content -Value $out.ToArray() -Path c:\out2.txt[/src]

25 Sekunden - also etwas unter der hälfte. Liegt vor allem an der Referenz auf die .NET Funktion zum lesen der Datei.

Beide Scripte kannst du in eine .ps1 speichern, Pfade anpassen und rechtsklick > ausführen als Powershell.
Dabei musst du im Standard eine Nachfrage bestätigen die nur verhindert das man ein solches Script nicht ausversehen ausführt.
Wenn du diese Sicherung ausschalten möchtest dann geht das indem du die powershell-console auf machst (Windows-Taste + R > powershell.exe) und dort "set-executionpolicy unrestricted" eingibst und den Anweisungen folgst.

Edit:
Habe noch eine Lösung 3 als Batch von einer guten Seele schreiben lassen... Laufzeit 25 Minuten :)
[src=bash]@echo off
SetLocal ENABLEDELAYEDEXPANSION
del out.txt >nul: 2>&1
For /f %%a in (uniqpass.txt) do @(
Set _X1=&Set _X2=
Set _x1=%%a
if not "!_x1:~7,1!" == "" Set _x2=!_x1!
if "!_x2:~15,1!" == "" Echo !_x2! >> out.txt
)[/src]
 
Zuletzt bearbeitet:

M315T3R

sglatschtglei...

Registriert
14 Juli 2013
Beiträge
3.013
Ort
Bier
  • Thread Starter Thread Starter
  • #8
Rückmeldung:
Ich hab das Script von KcDaRookie: probiert. Klappt wunderbar!

THX @All! :beer:
 
Oben