Jump to content

1 Zeile aus Datei entfernen, mit Powershell


Direkt zur Lösung Gelöst von epsodus,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hänge mal bitte bei Olafs "Out-File" ein "-Encoding utf8" dahinter. Funktioniert es dann?

 

Edit:

Microsoft unterscheidet zwischen "UTF8NoBOM" und "UTF8". Mir erschließt sich der Unterschied nicht. // Powershell 6.0 +

 

Die Powershell 5.1 hat default ein Encoding:

  • Out-File -> Unicode
  • Set-Content -> Default -> ANSI

 

Die Powershell 6.0 +

  • Out-File -> UTF8NoBOM
  • Set-Content -> UTF8NoBOM

 

Das sollte hier Klarheit in das Verhalten bringen.

bearbeitet von MurdocX
Link zu diesem Kommentar
  • Beste Lösung

Hallo,

 

ich bin wirklich blö…..  Mit eurem Script konnte ich meinen Wunsch umsetzen.

Mein Fehler war, dass ich euer Script im Funktionsblock eingesetzt habe, wo die Abarbeitung jedes einzelnen Files erfolgte.

 

Ich habe euer Script jetzt an den Anfang des Funktionsaufrufes gesetzt, hier liegen alle Dateien gesammelt im Verzeichnis. Euer Scriptteil wird dann einmalig aufgerufen und

alle Dateien werden abgearbeitet. Erst danach rufe ich meinen Funktionsblock auf.

 

Einen riesen Dank, habe jetzt was dazugelernt und danke für Eure Hilfe

 

 

Link zu diesem Kommentar
  • 2 Jahre später...

Moin zusammen,

 

liest hier noch einer der Experten ?

 

Mit PowerShell in einer Datei suchen und ersetzten, bekomme ich noch hin.

Hab jetzt ein, naja muß zugeben für mich unlösbares, Problem :-(

 

Habe eine Datei in der folgendes geändert werden muß:

 

Suche eine Zeile die mit „H100“ anfängt, wenn nächste Zeile mit „I00“ anfängt suche nächste Zeile die mit „H100“ anfängt.
wenn nächste Zeile nicht mit „I00“ anfängt geh zum ende der Zeile, füge ein Leerzeichen ein und entferne Zeilenumbruch
Das mach so lange bis nächste Zeile mit „I00“ anfängt

 

Ist sowas möglich mit Powershell ?

 

Gruß

Der Peter

 

 

Link zu diesem Kommentar

@Damian oh sorry :-( OK

 

 

ja naja For-Schleife ok.

In der gleichen Datei ersetze ich per Skript die Umlaute, das hab ich gerade noch so hinbekommen.

Vielleicht ist es möglich  das skript zu erweitern ? könnte mir da jemand helfen ?

 

 

 

$ersetzungspfad = "C:\Zwischenablage\*" 
$search = @("ö","ä","ß", "ü")
$replace = @("oe","ae","ss","ue")
$schleife = "y"
$i=0 
if($schleife -ieq "y"){ 
    foreach ($s in $search){
        Get-ChildItem -Path $ersetzungspfad -Include *.*,*.properties| Foreach-Object {Get-Content $_ | Out-String | Foreach-Object {$_.Replace($s,$replace[$i])} | Set-Content $_}
        $i++}}

 

Link zu diesem Kommentar
vor einer Stunde schrieb Der_Peter:

oh sorry :-( OK

Ich würde empfehlen, mit einem eigenen Thread nochmal neu anzufangen. ;-) 

 

vor einer Stunde schrieb Der_Peter:

Vielleicht ist es möglich  das skript zu erweitern ?

Klar ... is immer ne gute Idee. Ich würde aber erstmal Deinen bisherigen Code korrigieren/verbessern. Dein Ansatz die Umlaute zu ersetzen ist wahnsinnig ineffizient. Du liest jede Datei insgesamt 4 mal ein, um ein paar Umlaute zu ersetzen und schreibst jede Datei auch wieder 4 mal neu. Ich würde empfehlen, das eher anders rum zu machen. ;-)   ... und was ist mit großen Ös, Üs und Äs? ;-) 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...