2016-03-26 8 views
0

Ich habe eine Datei myfnames.txt genannt und enthält die ff unter:Entfernen 0er in einer Textdatei Führende

00000001 
00000002 
00000004 
00000005 
00000010

ich die führenden 0s entfernen möchten, aber nicht die 0 auf 00000010

I‘ Ich versuche, Trimstart('0') zu verwenden, aber es scheint nicht zu funktionieren.

Antwort

1

Verwenden Sie einfach einen regulären Ausdruck ersetzen etwa so:

Get-Content myfnames.txt | % {$_ -replace '^0+', ''} | Set-Content NewFile.txt 
+0

Danke dafür! Ich war bereits im Begriff, alle von ihnen in ein Array zu legen und es zu schleifen und den Trimstart zu benutzen, aber das macht es einfacher :) –

1

Eine Möglichkeit, die Werte einfach zu gegossen ist auf ganzzahlige:

$f = 'C:\path\to\myfnames.txt' 
(Get-Content $f) | ForEach-Object { [int]$_ } | Set-Content $f 

Andere Möglichkeiten sind die -replace Operator, der @DaveSexton vorgeschlagen (ForEach-Object isn‘ t erforderlich, da der Operator direkt auf dem Array verwendet werden kann, das Get-Content zurückgibt):

$f = 'C:\path\to\myfnames.txt' 
(Get-Content $f) -replace '^0+' | Set-Content $f 

oder die TrimStart() Methode Sie sagten, Sie versucht hatte:

$f = 'C:\path\to\myfnames.txt' 
(Get-Content $f) | ForEach-Object { $_.TrimStart('0') } | Set-Content $f 

Wenn Sie mindestens Powershell haben v3 Sie letztere dazu vereinfachen kann:

$f = 'C:\path\to\myfnames.txt' 
(Get-Content $f).TrimStart('0') | Set-Content $f 

weil seit v3 Powershell automatische Aufrollen unterstützt von Arrays, so dass Sie eine Methode für die Mitglieder eines Arrays transparent aufrufen können, indem Sie sie auf dem Array selbst aufrufen. Vor Version 3 würde dies zu einem Fehler führen, da das Array nicht abgerollt wird und das Array-Objekt selbst keine Methode TrimStart() hat.


Randbemerkung: So oder so, wenn Sie wollen die geänderten Daten wieder auf die gleiche Datei, die Sie Get-Content in Klammern ausgeführt werden müssen, um schreiben, so dass es liest (und schließt) die gesamte Datei vor dem Passieren Daten in die Pipeline. Andernfalls würde Set-Content versuchen, in die Datei zu schreiben, während sie noch gelesen wird, was fehlschlagen würde.

Verwandte Themen