Re: Replace lines in a text file?



If you're using msh here's a quick way to do what Crash suggested. Say you
want to turn every instance of "href" into "HREF" in a file named
"file.htm". The following script will do that:

$data = (get-content file.htm) -replace "href","HREF"; $data >
file.htm

This example loads the entire script into memory at once so you probably
don't want to use it process huge scripts. The other way to do this is to
use a temp file. That solution would look like:

get-content file.htm | foreach { $_ -replace "href","HREF" } > temp.htm
move-item -force temp.htm file.htm

The first line writes the transformed file into temp.htm and the second line
renames temp.htm to file.htm, overwriting the existing file.

--
Bruce Payette [MSFT]
Microsoft Command Shell Development
Microsoft Corporation
This posting is provided "AS IS" with no warranties, and confers no rights.


""Crash" Dummy" <dvader@xxxxxxxxxxxxx> wrote in message
news:e%23rLl7v7FHA.3976@xxxxxxxxxxxxxxxxxxxxxxx
>> I am needing to read a text file, more specifically a certain line (let's
>> just say line 4) of the text file, match it against a pattern using an IF
>> THEN statement, and if it does not match the pattern I need to replace
>> that
>> line with a set string. I am familiar with opening and closing, read and
>> writing to text files, but I cannot find a solution for line replacement.
>
> That's because there isn't one. You can't edit files in situ.
>
>> I also know that you cannot simultaneously write to a file while it is
>> open
>> for a read. Is there a solution to this?
>
> The only solution to this is either to read the whole file, close it, and
> reopen
> it for writing, or create a new file for writing.
>
> For your particular situation, there are a couple of ways to go at it,
> depending
> on how big the file you want to edit is. If it is small, you can load the
> whole
> file, edit the line in question, then write it back to the file. If the
> file is
> large, you read it one line at a time, edit the line or lines you want,
> and
> write back to a temporary file. When you are done, delete the original and
> rename the temp to the original name.
> --
> Crash
>
>
>


.



Relevant Pages

  • Re: A rehash of an old idea but still funny....
    ... You think that after going to all that effort to create that edit and writing a script that they would of employed a spell checker and/or a dictionary at some point. ...
    (uk.games.video.xbox)
  • Re: A rehash of an old idea but still funny....
    ... You think that after going to all that effort to create that edit and writing a script that they would of employed a spell checker and/or a dictionary at some point. ...
    (uk.games.video.xbox)
  • Re: A rehash of an old idea but still funny....
    ... You think that after going to all that effort to create that edit and writing a script that they would of employed a spell checker and/or a dictionary at some point. ...
    (uk.games.video.xbox)
  • Run VBA script after certain e-mail is sent
    ... I am trying to write a script to send out an e-mail based on the day of ... I would like for the user to be able to edit the email before ... idea how to do before I starting writing that portion of the code. ...
    (microsoft.public.office.developer.outlook.vba)
  • Re: [WR] round tuits
    ... Jackson Pillock wrote: ... I do, too many projects going, not enough time, priorities lean toward ... I started writing a precinct drama set in a locked psychiatric ward. ... Sent off my script. ...
    (misc.writing)