다음과 같이 많은 디렉토리 정보가 포함된 파일이 있는 경우:
/home/svdev/src/lib
/home/dev/project/doc
/home/server/etc
"/home" 디렉터리 옆에 있는 디렉터리 이름을 가져오고 싶습니다. 따라서 이 데이터 세트의 경우 출력은 svdev, dev, server여야 합니다.
답변1
$ sed -e 's,^/home/,,' -e 's,/.*,,' file
svdev
dev
server
sed
이는 초기 경로를 먼저 제거한 다음 줄의 나머지 부분에서 첫 번째 경로 뒤의 모든 항목을 /home/
제거 하는 데 사용됩니다 ./
피하기 위해 s
명령 구분 기호로 쉼표를 사용합니다.sed
기울어진 이쑤시개 증후군.
또 다른 방법 sed
은 전체 줄을 다음 사이의 두 번째 내용으로 바꾸는 것입니다 /
.
$ sed 's,/[^/]*/\([^/]*\)/.*,\1,' file
svdev
dev
server
답변2
cut
슬래시를 구분 기호로 사용하고 지정하는 매우 조잡한 방법입니다 .
cut -d "/" -f 3 thefile
산출:
svdev
dev
server
디렉토리가 모두 다음으로 끝난다고 가정합니다./home
답변3
/home의 하위 디렉터리를 인쇄하려는 경우
find /home -type d -maxdepth 1 -mindepth 1
경로가 파일의 내용인 경우,
awk -F '/' '{printf "%s, ",$3}' file.txt