Need help with sed statement

Chris Tyler chris at tylers.info
Tue May 4 03:46:40 UTC 2010


On Mon, 2010-05-03 at 21:37 -0600, David Bartmess wrote:
> Not sure if this is the right place, but I need help with a sed 
> replacement expression.
> 
> I'm trying to express only the filename from a filepath, i.e., 
> whoopie.txt from /opt/dev/whoopie.txt.
> 
> Basically I'm reading the files that changed into a temp file, and 
> reading each line into a variable to split out the base filename to act 
> upon.
> 
> I tried using the following, but it still gives me the entire string:
> 
> #!/bin/bash
> BASEDIR="/opt/dev";
> echo $BASEDIR | sed "s/$BASEDIR\///"
> 
> This gives me back the entire original string.
> 
> And I also tried the following sed statement:
> 
> echo $BASEDIR |  sed "s/^.*\([^/]+\)$/\1/"
> This gives me back nothing at all
> 
> Thanks for any help!

I think you want the 'basename' command:

  PATHNAME=/var/log/messages
  basename $PATHNAME

Alternately, using sed, something like:

  PATHNAME=/var/log/messages
  echo $PATHNAME|sed "s|^.*/||"

Both of these output "messages".

-Chris



More information about the users mailing list