Extrai os dois primeiros diretórios em um caminho

0

Eu preciso extrair os dois primeiros diretórios em um caminho que esteja na variável $ ORACLE_HOME

ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb

Eu preciso do valor: /oradba/app/

    
por Ken Hughes 04.05.2018 / 18:29

3 respostas

3

  1. Usando o corte (alinhando no final / ):

    ORACLE_HOME=$(printf "%s" "$ORACLE_HOME" | cut -d/ -f1-3)/
    
  2. Usando a expansão de parâmetro duas vezes; o primeiro retira os dois primeiros elementos do diretório, e o segundo retira esse resto da variável original:

    suffix=${ORACLE_HOME#/*/*/}
    ORACLE_HOME=${ORACLE_HOME%"$suffix"}
    
por 04.05.2018 / 18:48
0

Duas alternativas. O último é mais complicado, mas mais seguro, já que não requer que você saiba quantos diretórios estão na variável:

$ echo ${ORACLE_HOME%/*/*/*/*}/
/oradba/app/
$ echo $ORACLE_HOME | awk -F/ 'BEGIN {OFS="/"} {print $1,$2,$3,""}'
/oradba/app/
    
por 04.05.2018 / 18:43
0

Tente:

echo $ORACLE_HOME | cut -d/ -f-3

Por exemplo:

$ ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb
$ echo $ORACLE_HOME | cut -d/ -f-3
/oradba/app
$
    
por 04.05.2018 / 19:14

Tags