경로의 처음 2개 디렉터리를 추출합니다.

경로의 처음 2개 디렉터리를 추출합니다.

$ORACLE_HOME 변수의 경로에서 처음 2개의 디렉토리를 추출해야 합니다.

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

나에게 필요한 가치:/oradba/app/

답변1

  1. 잘라내기 사용(끝에 추가 /):

    ORACLE_HOME=$(printf "%s" "$ORACLE_HOME" | cut -d/ -f1-3)/
    
  2. 인수를 사용하여 두 번 확장합니다. 첫 번째는 디렉터리의 처음 두 요소를 제거한 다음 두 번째는 원래 변수의 나머지 요소를 제거합니다.

    suffix=${ORACLE_HOME#/*/*/}
    ORACLE_HOME=${ORACLE_HOME%"$suffix"}
    

답변2

두 가지 옵션. 후자는 더 복잡하지만 변수에 디렉터리가 몇 개 있는지 알 필요가 없으므로 더 안전합니다.

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

답변3

노력하다:

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

예를 들어:

$ ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb
$ echo $ORACLE_HOME | cut -d/ -f-3
/oradba/app
$

관련 정보