리눅스 패턴 검색

리눅스 패턴 검색

다음과 같이 많은 디렉토리 정보가 포함된 파일이 있는 경우:

/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

관련 정보