case conversion in sed substitution does not work

Erik Bågfors zindar at gmail.com
Thu Nov 4 09:02:06 UTC 2004


In the first case you are looking for the characters a-z and turn them
to upper case, your search does not include a space, hence it stops at
the first space. The correct regex is


echo dennis decker jensen | sed -re 's/[a-z ]+/\U&/'
DENNIS DECKER JENSEN

Note the space after the z.

In the second case if you only want to convert the first D use

echo dennis decker jensen | sed -re 's/[a-z]/\U&/' 
Dennis decker jensen

I don't think there is anything wrong with sed, just how you use the regex.

Also note that regex's sometimes are different between different
programs/languages. Perl regex's can do more than sed regex's for
example.

/Erik



On Wed, 03 Nov 2004 00:29:12 +0000, Dennis Decker Jensen
<dennisdjensen at tiscali.dk> wrote:
> Package: sed
> Version: 4.1.2-1
> Severity: normal
> 
> case 1:
> 
> echo dennis decker jensen | sed -re 's/[a-z]+/\U&/'
> DENNIS decker jensen
> 
> case 2:
> 
> echo dennis decker jensen | sed -re 's/[a-z]+/\u&/'
> ennis decker jensen
> 
> I expected this in case 2:
> Dennis decker jensen
> 
> It eats the character! The same thing happens when using \l (\L).
> 
> -- System Information:
> Debian Release: testing/unstable
> Architecture: i386 (i686)
> Kernel: Linux 2.6.8.1-3-386
> Locale: LANG=en_DK, LC_CTYPE=en_DK
> 
> Versions of packages sed depends on:
> ii  libc6              2.3.2.ds1-13ubuntu2.2 GNU C Library: Shared libraries an
> 
> -- no debconf information
> 
> --
> ubuntu-users mailing list
> ubuntu-users at lists.ubuntu.com
> http://lists.ubuntu.com/mailman/listinfo/ubuntu-users
>




More information about the ubuntu-users mailing list