sed regular expression help

Cameron Simpson cs at zip.com.au
Fri May 22 22:19:00 UTC 2015


On 22May2015 14:56, Davis, Brent <Brent.Davis at sscgp.com> wrote:
>Yea sorry about that.  My co-worker mentioned that the underlined wouldn't come through.
>
>The '+%D'` is what I had underlined.
>
>I thought I had tried the regex before and it didn't work.  I just tried it again, and same thing.
>
>sed -e "s/\'\W%D\'\`//g;/skipping/d"
>
>
>BEFORE.....: `date --date=2015-01-10 '+%D'`
>AFTER......: `date --date=2015-01-01 '+%D'`

1: Please don't top post, and please trim the quoted material for relevance.

2: Please make clear what output you want after the sed command runs. The above 
seems to should a failed run (no change). Please give an example of what a 
successful run would do.

3: Inside double quotes the backslash is special. Use single quotes; they a re 
FAR more reliable when working with regexps on the comman line. If you need to 
use a single quote in the expression, leaves quotes, quote the single quote, 
return to quotes, eg:

  sed 's/foo'\''bar/foo-ach-bah/'

which represents:

  s/foo'bar/foo-ach-bag/

inside sed.

4: You can put sed commands into a file, avoid all quoting issues. For example 
you can put the "raw" sed command(s) in a file "foo.sed" an go:

  sed -f foo.sed

which avoids a lot of quoting pain.

You also write:

  Like I said, I tested this on regexr.com, and either works no problem

5: Any regexp tester is VERY dependent on the flavour of regexp in use: basic 
regexps, full regexps, sed regexps (basic or full depending on options), perl 
compatible regexps, etc etc. They're great for finding logical errors, less so 
for subtle quoting or dialect errors.

Cheers,
Cameron Simpson <cs at zip.com.au>

Don't have awk? Use this simple sh emulation:
    #!/bin/sh
    echo 'Awk bailing out!' >&2
    exit 2
- Tom Horsley <tahorsley at csd.harris.com>




More information about the redhat-list mailing list