Help with a regular expression???

Amedee Van Gasse (ub) amedee-ubuntu at amedee.be
Wed Jan 27 14:53:31 UTC 2010


On Wed, January 27, 2010 15:06, Kevin O'Gorman wrote:

> However that may be, I would suggest a perl filter, which is a one-liner
> suitable for a pipeline.
>    perl -p -e 's/    ([^ ])/_ \1/g;'
> translation:
>    -p: copy everything in a loop
>    -e: statement for the loop follows
>    s/   /   /g:   do a substitution on everything (g=multiple times on a
> line)
>    (  ): remember this
>    [^ ]: a character class consisting of any one non-space character.
> Probably does not match newlines either.
>    \1  : the first remembered thing
>
> Hope this helps.

The same regex syntax can be used with the bash command sed:

sed 's/    ([^ ])/_ \1/g'


This *may* be a bit faster than using heavyweight perl. OTOH perl can do a
lot more than sed, so it depends on what you want to do.

-- 
Amedee





More information about the ubuntu-users mailing list