Re: OT: matched string of a regular expression



On Wed, Mar 04, 2009 at 04:24:27PM -0500, kamaraju kusumanchi wrote:
Consider the following file.

cat junk.txt
a(i)1b
a(j)1b
a(ij)1b
a(ji)1b
a(ijk)1b
a(jik)1b
a(ikj)1b
a(jki)1b
a(kij)1b
a(kji)1b

In general the file is very long, might contain some other text. Now,
I would like to replace all the occurrences of

a(ijk)1b with a(ijk)23b
a(jik)1b with a(jik)23b
a(ikj)1b with a(ikj)23b
and so on for all the strings such as a(???)

Because of the size of the files involved, the number of files on
which I have to perform this operation I decided to use sed (instead
of doing it manually in vim)

However my sed script currently involves 6 lines (for all the
combinations of ijk) such as

s/a(ijk)1b/a(ijk)23b/g
s/a(jik)1b/a(jik)23b/g
s/a(ikj)1b/a(ikj)23b/g
and so on

This method is very cumbersome, not scalable. If I have to do similar
operations on a(ijklm) the script would be 120 lines! Is there any way
to write something like

s/a(???)1b/a(???)23b/g

where the second ??? is the string matched by the first regular
expression.

In general, how can I obtain the string that is matched by a regular
expression (in a shell script)?

BTW, Is sed the right tool for this kind of job? If not, can you
suggest any other tool that will get the job done in less time?

Perhaps you could write a script/program to permutate the letters of
the command line argument and then do:

for jim in `permutate`;do sed -i "s/a$jim1b/a$jim23b/";done

I've no idea if this would work. I'd certainly skip the -i option to
start with ;)


PS: Please include my email in the CC.

thanks
raju


--
To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx
with a subject of "unsubscribe". Trouble? Contact listmaster@xxxxxxxxxxxxxxxx


--
"Running Debian/GNU Linux and
loving every minute of it." -L. von Sacher-M. (1835-1895)


--
To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx
with a subject of "unsubscribe". Trouble? Contact listmaster@xxxxxxxxxxxxxxxx



Relevant Pages

  • Re: Client "daemon" for sorting e-mail via IMAP
    ... and tell him "move it to that folder there"? ... I'll clean up and post the script if anyone is interested. ... and may have trouble connecting to Gmail. ... subject of "unsubscribe". ...
    (Debian-User)
  • Re: OT: matched string of a regular expression
    ... However my sed script currently involves 6 lines (for all the ... is the string matched by the first regular ... how can I obtain the string that is matched by a regular ... To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx ...
    (Debian-User)
  • Re: How to save output when working in runlevel 3 (Lenny)
    ... If that is what you want to do, the "script" command ... control codes are preserved literally in the log file. ... To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx ... Trouble? ...
    (Debian-User)
  • OT: matched string of a regular expression
    ... However my sed script currently involves 6 lines (for all the ... is the string matched by the first regular ... how can I obtain the string that is matched by a regular ... To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx ...
    (Debian-User)
  • Re: rsync backup question
    ... Script started on Thu 21 Jul 2011 06:08:03 PM EDT ... I'm not exactly sure what you want, but to use rsync as a backup tool, I think that you should use the -a option. ... To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx ... Trouble? ...
    (Debian-User)