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

Geschrieben

Hallo,

 

folgende Codierung. UTF-8.

 

Die Datei sieht vom Inhalt wie folgt aus:

1TRANS20200128  100GTR XML Download Rep0001  10298310003       0000000016DTCCCDT 20200128   05:21    RDT 20200128   05:21
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Damit die XML Strucktur wieder lesbar ist, muß die erste Zeile raus.

Geschrieben (bearbeitet)

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
  • Beste Lösung
Geschrieben

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

 

 

  • Haha 1
  • 2 Jahre später...
Geschrieben

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

 

 

Geschrieben

@Der_Peter Hallo und Willkommen on Board! :-)

 

Beim deinem ersten Posting hat dir das Board einen Warnhinweis gezeigt, dass der ursprüngliche Thread schon sehr alt ist. Dieser Hinweis hat einen guten Grund und sollte nicht einfach ignoriert werden. Bitte beim nächsten Mal beachten.

 

VG

Damian

Geschrieben

@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++}}

 

  • Like 1
Geschrieben
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? ;-) 

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...