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

3 Antworten

Vom Fragesteller 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 30 Jahren
Lego2000 
Fragesteller
 25.08.2021, 15:57

Danke!
Funktioniert.

0
Von Experte Dultus, UserMod Light bestätigt

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

`.
Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet
Lego2000 
Fragesteller
 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?

0

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 
Fragesteller
 25.08.2021, 10:54

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

0