Wie in powershell eine Datei laden und Dinge ersetzen und addieren und löschen?

1 Antwort

Wäre schön gewesen, wenn Du hier ein paar Beispielzeilen geliefert hättest, mit denen sich arbeiten lässt.

Ich vermute mal, dass Du mit Deinem Ansatz der Verarbeitung von Strings völlig auf dem Holzweg bist und versuchst den tabellarischen Output eines Programms umzubauen.

Das Löschen einer festgelegten Anzahl von Zeichen ab einer bestimmten Position im String (Achtung positionsangaben sind 0-basiert ! das erste Zeichen hat die Position 0 ...usw.)

$MyString='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
 #entferne die Zeichen 4 bis 10 (7Stück)
$MyString.remove(3,7)

...schwieriger wird es schon, wenn Du mehrere Zeichengruppen entfernen möchtest, da sich mit dem entfernen von Zeichen die Position der übrigen Zeichen verschiebt. In Deinem Fall braucht man einfach nur von "Hinten" mit dem entfernen beginnen.

$MyString='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
$MyString.remove(49,7).remove(19,7).remove(3,7)

Das mit der Addiererei ist schon Grenzwertig (ich habe keine Ahnnung was für Zahlen da addiert werden soll und und auch welche Länge der Outbegrenzt sein soll um wieder in eine Art tabellarische Formatierung zu passen.)

egal ich machs wie Du willst (auch wenns Schwachsinn ist):

$Zeilen='   22     iwas     33.7    blah blubb muh miff   785.025','   33.7   iwas     65.782  blah blubb muh miff   301.033'
$Zeilen|
  ForEach-Object{
       #wandle Substring an Position zu Kommazahl (ich verkneife mir das Abfangen von Fehlern,  weil die ganze herangehensweise ohnhin Müll ist!) 
      $Number1=$_.SubString(3,7) -as [double]
      $Number2=$_.SubString(19,7) -as [double]
      $Number3=$_.SubString(49,7) -as [double]
      '{0}{1}{2}' -f $($Number1+$Number2+$Number3),[char]9,$_  #[char]9 ist  der tabulator
  }

das ersetzen von vorgegebenen Strings ist wieder billig:

$Zeilen='[55] schnetereteng  [66] blubb [77]','blah [55] miff [66] maf [77]'
  $Zeilen|
  ForEach-Object{
       #Achtung Powershell verwendet   für die Angabe des zu ersetzenden  Strings  RegEx-schreibweise! jedoch nicht  für  den Ersastzstring
      $_ -replace '\[55\]','[12,0]' -replace '\[66\]','[0,42]' -replace '\[77\]','[1,33]'
  }
pause

Wie gesagt ist habe ich keine Ahnung was Du vorhast. Ich kenne nicht die Datenquelle. Wahrscheinlich ist Dein ganzes Konzept völliger Murks.

Auf blauen Dunst herumorakeln mach keinen Spaß

wahrscheinlich wäre es leichter eine Zeile einfach in ein Array zu splitten oder/und in ein DatenObjekt zu wandeln

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren