Powershell Frage

05/25/2023 13:11 back4ever#1
Hi,

Große Datei 5Mio Zeilen
Alle Wörter in "'" müssen kopiert werden

Voraussetzung:
Das Wort darf nicht als mehr 25 Zeichen beinhalten !
d.h alle längeren in 'Wort' müssen ignoriert werden

habe es so versucht:

PHP Code:
Get-Content edit1.txt Select-String -Pattern '"([^"]{0,25})"' -AllMatches | % { $.Matches } | % { $.Groups[1].Value } | Out-File -FilePath edit2.txt 
bekomme keine fehlermeldung edit2.txt wird erstellt, allerdings bleibt die "edit2" textdatei leer :/
Pfad wurde richtig angegeben weis nicht mehr woran es liegen könnte
wäre sehr dankbar wenn mir wer helfen könnte.


Danke
05/25/2023 17:20 .Wanted#2

Kannst die file direkt als ps1 umbenennen. Habs auch bei mir ausprobiert. Funktioniert.

Code:
# dateiname der eingabedatei
$in = "edit1.txt"

# dateiname der ausgabedatei
$out = "edit2.txt"

# zeilenweise die eingabe lesen und nach passenden wörtern suchen
Get-Content $in | ForEach-Object {

    # suche nach Wörtern
    $pattern = "'([^']{1,25})'"

    # übereinstimmungen finden
    $hit = [regex]::Matches($_, $pattern)

    # gefundenes rein in edit2.txt des derzeitgen pfades
    foreach ($hit in $hit) {
        $word = $hit.Groups[1].Value
        Add-Content -Path $out -Value $word
    }
}
05/25/2023 20:50 sk8land​#3
Du hast einfache und doppelte Anführungszeichen vertauscht.
05/26/2023 10:31 .Wanted#4
Quote:
Originally Posted by sk8land​ View Post
Du hast einfache und doppelte Anführungszeichen vertauscht.
Hatte doch geschrieben, dass er " ' " filtert. Evtl. falsch verstanden. Beide Versionen falls es Jemanden interessiert @[Only registered and activated users can see links. Click Here To Register...] (Er wollte noch <5 raus haben):

Filtert nach '
Code:
# dateiname der eingabedatei
$in = "edit1.txt"

# dateiname der ausgabedatei
$out = "edit2.txt"

# zeilenweise die eingabe lesen und nach passenden wörtern suchen
Get-Content $in | ForEach-Object {

    # suche nach Wörtern
    $pattern = "'([^']{5,25})'"

    # übereinstimmungen finden
    $hit = [regex]::Matches($_, $pattern)

    # gefundenes rein in edit2.txt des derzeitgen pfades
    foreach ($hit in $hit) {
        $word = $hit.Groups[1].Value
        Add-Content -Path $out -Value $word
    }
}
Filtert nach "
Code:
# dateiname der eingabedatei
$in = "edit1.txt"

# dateiname der ausgabedatei
$out = "edit2.txt"

# zeilenweise die eingabe lesen und nach passenden wörtern suchen
Get-Content $in | ForEach-Object {

    # suche nach Wörtern
    $pattern = '"([^"]{5,25})"'

    # übereinstimmungen finden
    $hit = [regex]::Matches($_, $pattern)

    # gefundenes rein in edit2.txt des derzeitgen pfades
    foreach ($hit in $hit) {
        $word = $hit.Groups[1].Value
        Add-Content -Path $out -Value $word
    }
}
05/26/2023 12:19 back4ever#5
besten dank für alles, funktioniert !
05/30/2023 09:15 Toxicator#6
#moved
05/30/2023 19:24 back4ever#7
dank @[Only registered and activated users can see links. Click Here To Register...] alles erledigt
von mir aus kann der Beitrag geschlossen werden