사용자 이름 및 그룹 이름과 함께 UNIX 시스템의 모든 사용자를 나열하는 방법은 무엇입니까?
/etc/passwd
보고서 양식 파일 및 /etc/group
파일을 받고 싶습니다 .
/etc/group
passwd 파일에서는 GIDS만 얻을 수 있지만 아래 Fotomat에서 언급하고 싶은 보고서에 표시될 그룹 이름도 가져오고 싶습니다.
사용자 이름(사용자 ID), 그룹 이름,
답변1
싱글로awk
주문하다:
awk -F':' 'NR==FNR{ a[$3]=$1; next }{ print $1", "a[$4] }' /etc/group /etc/passwd
-F':'
- 필드 구분 기호NR==FNR{ a[$3]=$1; next }
- 첫 번째 입력 파일(예:/etc/group
)을 처리합니다.a[$3]=$1
- 캡처팀 이름$1
사용그룹 식별자$3
배열a
키로next
- 다음 레코드로 이동
{ print $1", "a[$4] }
- 두 번째 입력 파일(예:/etc/passwd
)의 작업:$1
- 첫 번째 필드는 다음을 나타냅니다.사용자 이름a[$4]
- 얻다팀 이름그룹 ID별(필드로 표시됨$4
)
답변2
다음은 GID의 두 파일에 대해 관계형 JOIN을 수행하고 사용자 이름, 그룹 이름 및 :
중간 값을 출력합니다.
join -t : -1 4 -2 3 -o 1.1,2.1 \
<( sort -t : -k4,4 /etc/passwd ) \
<( sort -t : -k3,3 /etc/group )
GID는 passwd
파일의 열 4와 파일의 열 3에 있습니다 group
.
두 입력 파일의 연결된 필드를 사용 -1
및 지정하고, 각 파일에서 출력할 필드(각 파일의 첫 번째 필드)를 지정합니다.-2
-o
join
작동하려면 조인 필드에서 각 파일을 정렬 해야 합니다.
이것을 얻으려면정밀한형식 요구 사항을 파이프로 입력하고 sed 's/:/, /'
콜론을 쉼표와 공백으로 바꾸세요.