나는 하나 이상의 홈 디렉토리를 포함하는 / 하위 디렉토리의 수를 세어야 합니다. 예를 들어, john, emily 및 rick의 홈 디렉터리가 /home/john, /home/emily 및 /var/lib에 있는 경우 대답은 2입니다.
Cut과 Grep을 사용하여 파이프를 사용해야 할 것 같은데 정확히 어떻게 사용하는지 모르겠습니다.
답변1
(export LC_ALL=C
getent passwd | cut -d: -f6 | sort -t/ -uk2,2 | grep -c ..)
사용자 홈 디렉터리의 고유한 두 번째 구성 요소 수를 계산합니다.
LC_ALL=C
uniq
일반적으로 우리가 사용할 때 필요합니다.sort -u
getent passwd
계정 데이터베이스를 csv(콜론으로 구분)로 반환합니다(열거가 가능하다고 가정하지만 네트워크 데이터베이스의 경우 항상 그런 것은 아닙니다).cut -d: -f6
각 레코드의 6번째 필드 추출(기본 디렉터리)sort -t/ -uk2,2
두 번째 디렉터리 구성 요소를 정렬하고-u
각 고유 정렬 키에 대해 하나의 레코드만 유지합니다.grep -c ..
제외할 문자가 두 개 이상 포함된 줄 수를 계산합니다/
(또는grep -cvx /
:)
+ + 단일 호출 로 cut
대체 가능 :sort
grep
awk
getent passwd | awk -F: '{split($6, p, "/")}
p[2] != "" && !seen[p[2]]++ {n++}
END {print n}'