Powershell in .txt Punkt (.) durch etwas anderes ersetzen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

replace arbeitet mit RegEx https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck).

Der Punkt repräsentiert in regulären Ausdrücken ein beliebiges Zeichen. Folglich werden alle Zeichen durch Kommas ersetzt.

[ ] ( ) { } | ? + - * ^ $ \ .: ! < = müssen um sie als Literal zu verwenden durch einen Backslash maskiert (escaped) werden. \[\ ]\ (\ )\ {\ }\ |\?\+ \-\* \^\$ \\\.\:\!\ <\ = .

Ebenso müssen die Buchstaben dDwWsS im Suchbegriff escaped werden \d\D\w\W\s\S da diese Buchstaben vordefinierte Zeichenklassen darstellen

In deinem Fall ist die Lösung simpel:

$old2='\.'
$new2= ','
(get-content 'OldFile.txt' -Raw) -replace $old2,$new2 >'NewFile.txt'
  • Ich empfehle Dir statt "Doublequotes" als Stringbegrenzer 'Singlequotes' zu verwenden.
  • Pfade solltest Du ebenfalls mit 'Singlequotes' einfassen, da dies vor unliebsamen Überraschungen schützt, wenn ein Pfad Leerzeichen oder Klammern etc enthält.
Woher ich das weiß:eigene Erfahrung – Ich mach das seit über 30 Jahren

Lego2000 
Beitragsersteller
 25.08.2021, 15:57

Danke!
Funktioniert.

Von Experte Dultus bestätigt

Du musst den Punkt "escapen". Sollte in Powershell so gehen:

`.
Woher ich das weiß:eigene Erfahrung – Haben Sie es mal mit Aus- und Wiedereinschalten probiert?

Lego2000 
Beitragsersteller
 25.08.2021, 11:15

Sicher das es `. ist?
bei `. ersetzt er immer noch alles und bei ´. passiert gar nichts.

für mehr Kontext zwei Zeilen der .txt sehen so aus:

2021-08-25 08:44:04 ,        1770.0   ,           1750.2   ,               50.8   , 
2021-08-25 08:44:09 ,        1770.0   ,           1750.2   ,               50.4   ,

Ich habe gerade gesehen, das es doch die PS Version 5.1 ist, liegt es vielleicht daran?

Bist du sicher, dass es in der PS dafür keine kürzere, bzw. elegantere Lösung gibt?

Bei unixoiden Shells würde man es einfach so machen:

tr . , <in.txt >out.txt

Das geht doch sicherlich ähnlich schick in der PS, oder?

Woher ich das weiß:Berufserfahrung

Lego2000 
Beitragsersteller
 25.08.2021, 10:54

Kann sein, bin kein Experte :D
probiere ich mal aus