search and replace string from a script
Randal L. Schwartz
merlyn at iwarp.intel.com
Fri Apr 26 03:10:13 AEST 1991
In article <1991Apr25.040751.1991 at ttsi.lonestar.org>, root at ttsi (System) writes:
| >perl -pe '/STRING1/ && (++$n == 20) && s/STRING1/STRING2/' <in >out
| >
| >perl -pe 'if (/STRING1/ && (++$n == 20)) { s/STRING1/STRING2/; }' <in >out
| >
| >perl -pe 'if (/STRING1/) { s/STRING1/STRING2/ if ++$n == 20; }' <in >out
| >
| >perl -pe 's/STRING1/STRING2/ if /STRING1/ && (++$n == 20);' <in >out
| >
| >All of these presume "20" is your magic occurance. Season to taste.
| >
| >print "Just another Perl hacker," # Perl is available from all GNU sites...
|
| These all presume only one occurrence or first occurrence per line.
| Is that the requirement? How would you handle counting multiple
| occurrences per line in perl? Thanks for posting the solutions above.
OK, now you did it. You asked me to get ugly. Hang on to your hat...
perl -pe 's/STRING1/(++$n == 20) ? "STRING2" : $&/ge' <in >out
You might need to look at this one for a while to figure out what's
happening. Trust me, it'll be good for you. :-)
(And if you can't figure it out, I know this great book on the
subject... :-)
print "Just another Perl hacker,";
--
/=Randal L. Schwartz, Stonehenge Consulting Services (503)777-0095 ==========\
| on contract to Intel's iWarp project, Beaverton, Oregon, USA, Sol III |
| merlyn at iwarp.intel.com ...!any-MX-mailer-like-uunet!iwarp.intel.com!merlyn |
\=Cute Quote: "Intel: putting the 'backward' in 'backward compatible'..."====/
More information about the Comp.unix.shell
mailing list