This is a discussion on string substitution help (search and replace) within the AIX Operating System forums, part of the Unix Operating Systems category; --> Hello everyone I need help. I need to do string substitution on over 350 files on the following string. ...
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| 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 |
| |||
| 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 |
| |||
| Ray Muforosky <izombe@yahoo.com> wrote: > 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 -- Tad McClellan SGML consulting tadmc@augustmail.com Perl programming Fort Worth, Texas |
| |||
| In comp.unix.aix Ray Muforosky <izombe@yahoo.com> wrote: > 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. I am sorry, I know no tricky command, but if simple commands will do: In vi: :%s/thr=[0-9]*\([0-9][0-9]\),/thr=\1,/ In sed: sed -e 's/thr=[0-9]*\([0-9][0-9]\),/thr=\1,/' This assumes that the number behind thr= has at least 2 digits. Yours, Laurenz Albe |
| Thread Tools | |
| Display Modes | |
|
|