![awk는 /로 구분된 디렉토리 트리의 처음 세 폴더를 인쇄합니다.](https://linux55.com/image/92397/awk%EB%8A%94%20%2F%EB%A1%9C%20%EA%B5%AC%EB%B6%84%EB%90%9C%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%ED%8A%B8%EB%A6%AC%EC%9D%98%20%EC%B2%98%EC%9D%8C%20%EC%84%B8%20%ED%8F%B4%EB%8D%94%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
디렉토리 트리를 인쇄하는 변수가 있습니다. 예를 들면 다음과 같습니다.
/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"