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
Textdatei nach mehreren Begriffen durchsuchen
Moderators: Hacker, Stefan2, white
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.
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
Hier mal nen quick&dirty PowerShell Skript:
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.
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
}
}
PowerShell ISE starten, Code einfügen, Pfade anpassen und testen. Der Code ist für große Datenmengen natürlich ineffizient.
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
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
Win10 Pro: WD Black SN850 1TB (M.2 NVMe), Crucial MX500 4000GB, WD40EFRX 4TB, WD DC H530 14TB
OpenSuse TumbleWeed: Crucial MX500 2000GB
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
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
Aber grep kann mehr!Search for "granny" OR "Smith" in the files Apples.txt or Pears.txt
FINDSTR "granny Smith" Apples.txt Pears.txt
gruß
chriss
chriss