Dennis G. Wicks wrote: > Greetings; Hello,
> I frequently have to convert some address books from one format to > another. This is what I need to do. > > Input records are like this: > > [EMAIL PROTECTED]&Thu Oct 26 07:20:03 2006&1&&&&&&& > > The output record needs to be like this: > > [EMAIL PROTECTED]&Thu Oct 26 07:20:03 2006&1&wix&&&&&& > > In other words, get the user name from the email address and insert it > between the 2 ampersands after the number that follows the year. The > ampersands are field separators > and there will always be an email, a date, and a number. > > I can capture the user name and I can substitute something in between > the ampersands, but I can't substitute the user name between the two > ampersands. > > Here is what I have up now: > > perl -i -p -e 'm/^(.*)?@/;s/\&\&/\&$1\&/;' test.txt > > There is a key piece of this that I can't figure out. > > Any help greatly appreciated! perl -pe's/(?=^([EMAIL PROTECTED]))((?:[^&]+&){3})/$2$1/' test.txt perl -ne' @x = split /&/, $_, -1; splice @x, 3, 1, ( split /\@/, $x[ 0 ] )[ 0 ]; print join "&", @x; ' test.txt John -- Perl isn't a toolbox, but a small machine shop where you can special-order certain sorts of tools at low cost and in short order. -- Larry Wall -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>