on Mon, Sep 08, 2003 at 12:56:14PM +0800, csj (csj@zapo.net) wrote:
> At Mon, 8 Sep 2003 01:58:43 +0100,
> Karsten M. Self wrote:
> >
> > [1 <text/plain; us-ascii (quoted-printable)>]
> > on Mon, Sep 08, 2003 at 12:33:39AM +0800, csj (csj@zapo.net) wrote:
> > > Let's say I want to write a script that can convert the
> > > following:
> > >
> > > A-0001 Directory_1/Subdirectory_1/File_1.txt
> > > A-0002 ./Directory_2/Subdirectory_2/File_2.txt
> > > A-0003 ./Directory_3/Subdirectory_3/Subdirectory_4/File_3.txt
> > >
> > > to:
> > >
> > > A-0001 /Subdirectory_1/File_1.txt
> > > A-0002 /Subdirectory_2/File_2.txt
> > > A-0003 /Subdirectory_3/Subdirectory_4/File_3.txt
> > >
> > > My basic strategy would be to sed 's|/Directory_.||g'.
> > > Unfortunately this isn't of universal application. I'm looking
> > > for a solution than can take into account all possible names for
> > > "Dir_Foo".
> >
> > Based on what you've presented:
> >
> > sed -e 's/[ ]\.*\(\/Subdirectory_\)/ \1/'
>
> My brain is still trying to parse the slashes, but I take it to
> me that the trick is in the parenthesis()? Will try it when I
> get some sleep. Thanks!
What it says is: substitute everything starting with the first space or
tab, any character, the string (which is preserved) "/Subdirectory_",
with a tab and the preserved string.
Thinking about it, this might be better:
s/[ ][^ ]*\(\/Subdirectory_\)/ \1/
Which says: tab, followed by non-whitespace characters...
Peace.
--
Karsten M. Self <kmself@ix.netcom.com> http://kmself.home.netcom.com/
What Part of "Gestalt" don't you understand?
Defeat EU Software Patents! http://swpat.ffii.org/
Attachment:
pgpvOvzgYNB92.pgp
Description: PGP signature