awk는 /로 구분된 디렉토리 트리의 처음 세 폴더를 인쇄합니다.

awk는 /로 구분된 디렉토리 트리의 처음 세 폴더를 인쇄합니다.

디렉토리 트리를 인쇄하는 변수가 있습니다. 예를 들면 다음과 같습니다.

/folder1/folder2/folder3/folder4/folder5/folder6

나만 옳아처음 4개 값, bash에서 백슬래시로 구분된 첫 번째 디렉토리만 인쇄하는 가장 좋은 방법은 무엇입니까? 예:

/folder1/folder2/folder3/folder4

답변1

awk를 사용하세요:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    awk -F/ -vOFS=/ '{ print $1,$2,$3,$4,$5; }'

OFS= 출력 필드 구분 기호.

$1 .. $5선행 슬래시가 로 계산되므로 필수입니다 1.

사용 컷:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    cut -f -5 -d/

sed를 사용하세요:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    sed 's:\(\(/[^/]\+\)\{4\}\).*:\1:'

답변2

만약 있다면세게 때리다그리고 var능력이 있는

echo ${var%/${var#/*/*/*/*/}}

또 다른 방법

IFS=/ var=($var)
printf '%b/' "${var[@]::5}\n\c"

관련 정보