The equivalent one-liner for Aman's suggestion is:

perl -p -i -e's/(?:!|SUB-TOTAL)//' yourfile.txt

The above will seek out ! or SUB-TOTAL, replace them and write the
results to the current file i.e overwirte the file.

If you want to back up the current file, use the one-liner as follows:

perl -p -i '.bak' -e 's/(?:!|SUB-TOTAL)//' yourfile.txt.

The back up will be to the file yourfile.txt.bak.

You will sometimes see the -p -i switches shown as -pi which has the
same effect.

I use these oneliners a lot to make quick changes on the fly.

Alfred Vahau
IT Services
Uni. PNG

-------------------------------------------

Hi Thomas

File editing is particularly easy in perl.
Herez some sample code to get you started :

----------------------------------------------------------------------------

------------------------------

@ARGV='C:\Documents and Settings\athind\Desktop\test\File2Edit.txt'; #
path
to the file you want to edit

$^I=".bak";              # this will be appended to the original
filename
and will act as BackUp.

while (<>)
{
        s/!//;           # will replace ! with nothing i.e. all
instances of
! will be removed.
        s/SUB-TOTAL://;  # same as above for SUB-TOTAL:
        print;           # writes the new file line by line

}

----------------------------------------------------------------------------

--------------------------------

Try this on the file you want to edit.
Anything else you want to edit\replace can be done by the
s/what2replace/bywhat2replace/;

-aman

-----Original Message-----
From: Thomas Browner [mailto:thomas.browner@;digidyne.com]
Sent: Wednesday, November 13, 2002 7:33 PM
To: [EMAIL PROTECTED]
Subject: file editting






I there away to edit a file in perl? This is what is I am trying to do.
I have a file that I want to remove some content. This is an example of
a line:



!     6134.21   3200  SUB-TOTAL: M:\alvin



I want to remove the ! and SUB-TOTAL. I hope some one can tell me an
simple way of doing this sine I am a new to perl.



Thank you,



Thomas





Reply via email to