string substitution help (search and replace)

R

Ray Muforosky

Hello everyone I need help.

I need to do string substitution on over 350 files on the following
string. Is there a tricky command in vi or command line that can do
this.

FILE CONTENT:
......
.....
kasj tgn=0507, thr=12, options=sched,
safa tgn=0504, thr=22, options=sched,
asda tgn=0513, thr=122, options=sched,
asca tgn=055, thr=562, options=sched,
asca tgn=0514, thr=42, options=sched,

where there is "thr=###" I need make it "thr=##" deleting the first
digit.
So line 3 and 4 will be changed and the file content will be:

kasj tgn=0507, thr=12, options=sched,
safa tgn=0504, thr=22, options=sched,
asda tgn=0513, thr=22, options=sched,
asca tgn=055, thr=62, options=sched,
asca tgn=0514, thr=42, options=sched,

I know less 15 lines of perl script will do it, but I'm wondering if
there is another way.

Any Help will br appreciated.
Ray
 
S

sfgroups

I think this one-line will help you.

cat a.txt | perl -npe 's/^(.*thr=)\d*(\d\d,.*)$/\1\2/ '
kasj tgn=0507, thr=12, options=sched,
safa tgn=0504, thr=22, options=sched,
asda tgn=0513, thr=22, options=sched,
asca tgn=055, thr=62, options=sched,
asca tgn=0514, thr=42, options=sched,

or

cat a.txt | perl -npe 's/^(.*thr=)\d*(\d\d,.*)$/\1\2/ if 3..4 ; '
kasj tgn=0507, thr=12, options=sched,
safa tgn=0504, thr=22, options=sched,
asda tgn=0513, thr=22, options=sched,
asca tgn=055, thr=62, options=sched,
asca tgn=0514, thr=42, options=sched,


Here you can get some more perl one-liner example.

http://sfg.homeunix.com/support/viewtopic.php?t=47

-SR
 
R

Ray Muforosky

Thanks for the help.Is there anyway I can execute the command without
dumping the content of the file. Can do in file editing?
 
T

Tad McClellan

I need to do string substitution
asda tgn=0513, thr=122, options=sched,
asca tgn=055, thr=562, options=sched,
where there is "thr=###" I need make it "thr=##" deleting the first
digit.
asda tgn=0513, thr=22, options=sched,
asca tgn=055, thr=62, options=sched,

I know less 15 lines of perl script will do it, but I'm wondering if
there is another way.


perl -pe 's/thr=\d(\d\d)/thr=$1/' filename
 
R

Ray Muforosky

Thanks for the help.Is there anyway I can execute the command without
dumping the content of the file. Can do in file editing?
 
S

Sun

you use use in-place editing option

perl -i.old -npe 's/^(.*thr=)\d*(\d\d,.*)$/\1\2­/ if 3..4 ; ' a.txt

-SR
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top