Textdatei nach mehreren Begriffen durchsuchen

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
jendris
Junior Member
Junior Member
Posts: 21
Joined: 2006-12-05, 14:34 UTC

Textdatei nach mehreren Begriffen durchsuchen

Post by *jendris »

Hallo,

ich habe eine Textdatei mit untereinander stehenden Datensätzen.
Ich einer weiteren Datei habe Artikelnummern hinterlegt, die in der ersten Datei gesucht (und später gelöscht) werden sollen. Damit ich nicht jede Artikelnummer einzeln eingeben muß, (ca.200) suche ich eine Möglichkeit die mir dies erspart.
Notepad++ habe ich schon in Erwägung gezogen, kann diese Funktion aber nicht finden.

Kennt jemand eine Möglichlichkeit?

Vielen Dank Jendris
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1008
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Keine Ahnung was das mit dem TC zu tun hat, aber egal.

Nimm Excel oder Beyond Compare.
jendris
Junior Member
Junior Member
Posts: 21
Joined: 2006-12-05, 14:34 UTC

Post by *jendris »

Danke, probiere ich mal aus.

Jendris
User avatar
milo1012
Power Member
Power Member
Posts: 1158
Joined: 2012-02-02, 19:23 UTC

Post by *milo1012 »

Hat zwar in der Tat wenig mit dem TC zu tun.
Trotzdem: für solche Sachen gibt es keine vorgefertigten Funktionen,
da kannst du in Notepad++ und Konsorten noch so lange suchen, denn dafür ist der Anwendungsfall zu spezifisch.

Sowas kann man nur mit Regulären Ausdrücken sinnvoll regeln,
z.B. indem du die die Datei mit den Artikelnummern in einen Ausdruck umwandelst (mit jeweils Alternativen |),
was mit einer Suchen-und-Ersetzen-Funktion geht.

Diesen Ausdruck wendest du dann auf die große Datei an, ebenfalls mit Suchen und Ersetzen, damit die Datensätze (Zeilen) in denen ein Ausdruck gefunden wurde gelöscht werden.
Ein paar Details zur Datenstruktur wären hilfreich, dann könnte ich evtl. bei den Ausdrücken helfen.
TC plugins: PCREsearch and RegXtract
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1008
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Hier mal nen quick&dirty PowerShell Skript:

Code: Select all

$dateiArtNr = "c:\Temp\ArtNr.txt"
$dateiDaten = "c:\Temp\Daten.txt"
$dateiOut   = "c:\Temp\Daten_Out.txt"

$contentArtNr = Get-Content -Path $dateiArtNr
$contentDaten = Get-Content -Path $dateiDaten

foreach ($lineDaten in $contentDaten)
{
    $writeData = $true

    foreach ($lineArtNr in $contentArtNr)
    {
        if ($lineDaten.StartsWith($lineArtNr))
        {
            $writeData = $false
        }
    }

    if ($writeData)
    {
        Write-Host "ADD:" $lineDaten
        Add-Content -Value $lineDaten -Path $dateiOut
    }
    else
    {
        Write-Host "DEL:" $lineDaten
    }
}
Ich gehe davon aus, daß die Daten als CSV oder ähnlich vorliegen und die Artikelnummer vorne steht.

PowerShell ISE starten, Code einfügen, Pfade anpassen und testen. Der Code ist für große Datenmengen natürlich ineffizient.
User avatar
prian
Member
Member
Posts: 126
Joined: 2008-08-28, 11:23 UTC
Location: Bavaria

Post by *prian »

Hi,

um auf Excel wieder zu kommen, das ist dort einfach mit der Funktion SVERWEIS möglich.

Ein Beispiel hier:
http://excelwelt.de/excelallg/sverw.html

Gruß
Robert
AMD Ryzen 9 5950X, 64GB RAM, Asus ROG B550-E Gaming, ASUS TUF RTX 3080Ti OC
Win10 Pro: WD Black SN850 1TB (M.2 NVMe), Crucial MX500 4000GB, WD40EFRX 4TB, WD DC H530 14TB
OpenSuse TumbleWeed: Crucial MX500 2000GB
User avatar
chriss
Senior Member
Senior Member
Posts: 221
Joined: 2003-02-12, 10:17 UTC

Post by *chriss »

Hallo jendris

falls keine Angst vor der Kommandozeile hast würde ich dir grep empfehlen - das gibts auch als Windows-version ;)

Mit Windows-Bordmittel gehts auch - da wäre das Tool der Wahl findstr
Search for "granny" OR "Smith" in the files Apples.txt or Pears.txt

FINDSTR "granny Smith" Apples.txt Pears.txt
Aber grep kann mehr!
gruß


chriss
Post Reply