[vox-tech] Using awk or perl to find and replace

Ken Bloom kabloom at ucdavis.edu
Wed Nov 24 09:28:11 PST 2004


On Wed, Nov 24, 2004 at 08:57:03AM -0800, Trevor M. Lango wrote:
> On Wednesday 24 November 2004 00:15, Foo Lim wrote:
> > On Wed, 24 Nov 2004, Trevor M. Lango wrote:
> > > On Tuesday 23 November 2004 23:41, Foo Lim wrote:
> > > > On Tue, 23 Nov 2004, Trevor M. Lango wrote:
> > > > > I have been reading the man pages and I'm lost. ?I want to scan
> > > > > through an input file for an expression with this pattern:
> > > > >
> > > > > ? ? h.*.JPG
> > > > >
> > > > > and replace it with an expression with the following pattern:
> > > > >
> > > > > ? ? *.h.JPG
> > > > >
> > > > > Perl and awk both appear to be ideal candidates for just such a task
> > > > > but I'm a serious newbie to both of 'em. ?Any help much appreciated!
> > > >
> > > > Hi Trevor,
> > > >
> > > > Does the pattern "h.*.JPG" match something like this: h.abc123.JPG ?
> > >
> > > Something like this: "h.#-##-####-####.###.JPG"
> > >
> > > > Since the period "." is a metacharacter in regular expressions.  If
> > > > that's the case, then a perl script like this would work:
> > > >
> > > > while (<>) {
> > > >   s/h\.(.*)\.JPG/$1.h.JPG/g;
> > > >   print;
> > > > }
> > > >
> > > > FL
> >
> > The code above should work.  If it's possible to have multiple files on a
> > line, you may want to change the regex to this:
> >
> >   s/h\.(.*?)\.JPG/$1.h.JPG/g;
> >
> > instead, so it will minimal match instead of do a greedy match.
> 
> Okay I am not having any success.  Perhaps I need to be more specific - I am 
> trying to scan through html files to replace the image references in lines 
> like this one:
> 
>        <img align=right src="/IMAGES/C/h.I-LP-CEUR-AD.003.jpg"
> 
> In this particular example, I need to replace:
> 
>     h.I-LP-CEUR-AD.003.jpg
> 
> with:
> 
>     I-LP-CEUR-AD.003.h.jpg
> 
> Thank you for your responses!

Capitalization counts. If the files are named with a .jpg, then your
regexp pattern has to say .jpg. If the files are named with a .JPG,
then your regexp pattern has to say .JPG. There is a flag that you can
add at the end (were the g is) to do a case insensitive match, but not
to do a case insensitive, but not to make the replacement string case
insensitive.

-- 
I usually have a GPG digital signature included as an attachment.
See http://www.gnupg.org/ for info about these digital signatures.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://ns1.livepenguin.com/pipermail/vox-tech/attachments/20041124/0e6f9b19/attachment.bin


More information about the vox-tech mailing list