2011-02-10 15 views
11

Chciałbym dodać znaki na końcu każdego wiersza tekstu w dokumencie .txt.Dodaj tekst do każdej linii w pliku tekstowym, używając PowerShell

#Define Variables 
$a = c:\foobar.txt 
$b = get-content $a 

#Define Functions 
function append-text 
    { 
    foreach-Object 
     { 
     add "*" 
     } 
    } 

#Process Code 
$b | append-text 

Coś w tym stylu. Zasadniczo załaduj dany plik tekstowy, dodaj "*" na końcu każdego wiersza tekstu w tym pliku tekstowym, zapisz i zamknij.

Odpowiedz

4

czegos potrzebowalem jak to powinno działać:

function append-text { 
    process{ 
    foreach-object {$_ + "*"} 
    } 
    } 
+2

Jeśli używasz filtra, w ogóle nie potrzebujesz bloku 'process', np. 'filter Append-Text {" $ _ * "}' –

+0

To działa świetnie! Czy jest możliwe dodanie do tego kontroli nadmiarowej? Coś, co sprawdzałoby obecność "*", a jeśli nie jest na końcu linii, to dodaj? – Joshua

+2

Oczywiście, 'filter Append-Text {if ($ _ -match '\ * \ s * $') {$ _} else {" $ _ * "}}' –

16

Brak funkcji konieczne. Byłoby to zrobić: $ b | foreach {$ _ + "*"}

+3

A jeśli nadgarstki przeszkadzają, 'gc c: \ foobar.txt |% {" $ _ * " } 'To bardzo często używa aliasów, ale zazwyczaj używam PowerShell dla wielu jednorazowych operacji w linii poleceń i im mniej muszę pisać, tym bardziej moje nadgarstki mnie nie nienawidzą. :-) –

+0

To zdecydowanie działa, ale miałem nadzieję, że zachowam go w formacie funkcji, aby móc go ponownie wywołać, jeśli jest to konieczne. Prawdopodobnie masz rację, mój cel w tym skrypcie prawdopodobnie sprawia, że ​​potrzeba funkcji jest niepotrzebna – Joshua

1
PS> (gc c:\foobar.txt) -replace '\S+$','$&*' 
-1

prostu trwało około 2 godzin, aby się dogadać, nigdy nie używany Powershell wcześniej, ale tutaj przejść:

cls 
#Define Functions 
(gc g:\foobar.txt) -replace '\S+$','$& 1GB RAM 1x 1 GB Stick' | out-file "g:\ram 6400s.txt" 

Zmień lokalizację pliku. Pierwszy plik to plik, który chcesz edytować. Drugim jest plik wyjściowy.

+0

Nie rozumiem, dlaczego " \ S "(non-whitespace)? Myślę, że". + "Będzie drogą do zrobienia. –

Powiązane problemy