Solved

read a file and replace certain lines

Posted on 2002-06-13
5
114 Views
Last Modified: 2010-08-05
All,

How would I read through a file and replace lines that contain a certain word?

e.g.

The following test file is in existence

name,  age,  interests
bill,  30 ,  Football
Mark,  15 ,  Computers
Jill,  10 ,  Nothing!

If I wanted to loop through this file and replace the line containing Mark's age and interests with something else how would I go about that?

0
Comment
Question by:cyrobinson
  • 2
  • 2
5 Comments
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7075402
perl -i.bak -pe 's/Mark/whatever/' file
0
 
LVL 10

Expert Comment

by:rj2
ID: 7076439
If you want to change Marks age to 35 and his interests to Women, you could try sample below.
Just paste the line into a DOS prompt. Change filename from data.txt to correct filename in your system.

perl -i.bak -pe "s/Mark,(\s*)\d*(\s*),(\s*)\w*/Mark,\1\Q35\E\2,\3Women/" data.txt

If you don't need to preserve the spaces you could try the somewhat simpler line below instead.

perl -i.bak -pe "s/Mark,.*/Mark,35,Women/" data.txt

0
 

Author Comment

by:cyrobinson
ID: 7079974
i was more wanting to loop over each line of an input file from within a perl script and modify each line like that
0
 
LVL 10

Accepted Solution

by:
rj2 earned 200 total points
ID: 7080182
The one-liner above does that.
But here it is like a regular script (not one-liner)

#!/usr/bin/perl
use strict;

my($file)="data.txt";
my($backupfile)="data.bak";

unlink($backupfile);
rename($file,$backupfile);
open(INFILE,$backupfile);
open(OUTFILE,">$file");
while(<INFILE>) {          
     s/Mark,(\s*)\d*(\s*),(\s*)\w*/Mark,\1\Q35\E\2,\3Women/;    
     print OUTFILE $_;
}
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7080190
>  was more wanting to loop over each line of an input file from within a perl script and modify each line like that

This is exactly what my suggestion does :-)
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

815 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now