|
|
|
|
||||||
| comp.unix.shell Using and programming the Unix shell. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
I am trying to write a Bash script that extracts some or all of the
path components from an absolute path. For example, if I have the following absolute path: INSTALLROOT=/opt/vendor/product/ I need to be able to extract the first path component ("opt" from the example above), as well as the remaining string ("vendor/product" from the example above). What's the best way to do this from a Bash script? I have available awk, sed, and perl but am not familiar with them to be able to accomplish this! In my use cases, the absolute path will never have more than 5 or 6 components (i.e. it will not be any deeper than 5 or 6 sub-directory levels). Any is appreciated. Thanks. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On May 29, 11:45 am, fia_wrc_fanatic <fia_wrc_fana...@yahoo.com>
wrote: > I am trying to write a Bash script that extracts some or all of the > path components from an absolute path. > For example, if I have the following absolute path: > > INSTALLROOT=/opt/vendor/product/ > > I need to be able to extract the first path component ("opt" from the > example above), as well as the remaining string ("vendor/product" from > the example above). > > What's the best way to do this from a Bash script? I have available > awk, sed, and perl but am not familiar with them to be able to > accomplish this! In my use cases, the absolute path will never have > more than 5 or 6 components (i.e. it will not be any deeper than 5 or > 6 sub-directory levels). > > Any is appreciated. > > Thanks. echo $INSTALLROOT | cut -f2 -d"/" echo $INSTALLROOT | cut -f3- -d"/" It could be done better with ksh. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On 29 May 2007 09:45:22 -0700, fia_wrc_fanatic
<fia_wrc_fanatic@yahoo.com> wrote: > > > I am trying to write a Bash script that extracts some or all of the > path components from an absolute path. > For example, if I have the following absolute path: > > INSTALLROOT=/opt/vendor/product/ > > I need to be able to extract the first path component ("opt" from the > example above), as well as the remaining string ("vendor/product" from > the example above). > > What's the best way to do this from a Bash script? I have available > awk, sed, and perl but am not familiar with them to be able to > accomplish this! echo "$INSTALLROOT" | awk -F/ '{print $2}' echo "$INSTALLROOT" | awk -F/ '{sub("/" $2 "/","") rint}'> In my use cases, the absolute path will never have > more than 5 or 6 components (i.e. it will not be any deeper than 5 or > 6 sub-directory levels). > -- Whom the gods wish to destroy they first call promising. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On May 29, 12:45 pm, fia_wrc_fanatic <fia_wrc_fana...@yahoo.com>
wrote: > I am trying to write a Bash script that extracts some or all of the > path components from an absolute path. > For example, if I have the following absolute path: > > INSTALLROOT=/opt/vendor/product/ > > I need to be able to extract the first path component ("opt" from the > example above), as well as the remaining string ("vendor/product" from > the example above). > > What's the best way to do this from a Bash script? Would this be what you are looking for? echo ${INSTALLROOT%/*/*} ${INSTALLROOT#/*/} |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On 2007-05-29, fia_wrc_fanatic wrote:
> I am trying to write a Bash script that extracts some or all of the > path components from an absolute path. > For example, if I have the following absolute path: > > INSTALLROOT=/opt/vendor/product/ > > I need to be able to extract the first path component ("opt" from the > example above), as well as the remaining string ("vendor/product" from > the example above). > > What's the best way to do this from a Bash script? I have available > awk, sed, and perl but am not familiar with them to be able to > accomplish this! In my use cases, the absolute path will never have > more than 5 or 6 components (i.e. it will not be any deeper than 5 or > 6 sub-directory levels). In any POSIX shell (not just bash): IFS=/ set -f set -- $INSTALLROOT The components are now distributed in the positional parameters, $1 (opt), $2 (vendor), $3 (product) ... If you just need the last field: last=${INSTALLROOT##*/} -- Chris F.A. Johnson, author <http://cfaj.freeshell.org/shell/> Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress) ===== My code in this post, if any, assumes the POSIX locale ===== and is released under the GNU General Public Licence |
|
![]() |
| Outils de la discussion | |
|
|