이 에코 "/home/test/var/opt"에서 처음 3개 폴더를 자르는 방법은 무엇입니까? "/home/test/var" 결과가 필요합니다.

이 에코 "/home/test/var/opt"에서 처음 3개 폴더를 자르는 방법은 무엇입니까? "/home/test/var" 결과가 필요합니다.

문자열에서 처음 3개 폴더를 자르는 방법은 무엇입니까?

예를 들어:

echo "/home/source/Oracle/test" |cut -d'/' -f4 

폴더 이름은 하나만 제공되지만 다음과 같은 최대 세 번째 폴더가 필요합니다.

echo "/home/test/var/opt" | ... command here ...

반환해야/home/test/var

답변1

사용cut -d "/" -f1-4

ebvjr@Maintenance:~$ echo /home/test/var/opt | cut -d "/" -f1-4
/home/test/var

답변2

cut@ebvjr이 말했듯이 좋습니다. 첫 번째 필드가 비어 있으므로 4개의 필드가 필요하다는 점만 기억하세요.

그렇다면 grep코드는 더 길지만 아마도 더 직관적일 것입니다( {3}=세 번째 하위 폴더).

grep -Po "(/[^/]+){3}" <<<"/home/test/var/opt"
/home/test/var

답변3

나는 다음 awk 메소드를 사용하여 이 작업을 수행했습니다.

주문하다

echo "/home/test/var/opt"| awk -F "/" 'OFS="/"{print $1,$2,$3,$4}'

산출

/home/test/var

답변4

일반적으로 경로 이름은 줄 기반 텍스트 편집 유틸리티가 아닌 유틸리티 basename및 /또는 매개변수 대체를 통해 수정됩니다 .dirname

cutsed이는 기술적으로 경로 이름에 개행 문자가 포함될 수 있기 때문에 (또는 또는 등) 과 같은 줄 기반 도구를 사용하여 안정적으로 작업하기가 어렵기 때문입니다 awk.

당신이 가진 예는 상위 디렉토리의 경로 이름을 얻는 것입니다 /home/test/var/opt. 이렇게하는 것이 더 좋습니다

dirname /home/test/var/opt

이렇게 하면 반환할 수 있습니다 /home/test/var. 이는 주어진 경로 이름 /끝에 이 있는 경우에도 작동합니다.

관련 정보