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>


Reply via email to