사용자 이름과 그룹 이름으로 모든 사용자를 나열하는 방법은 무엇입니까? UNIX 시스템의 경우

사용자 이름과 그룹 이름으로 모든 사용자를 나열하는 방법은 무엇입니까? UNIX 시스템의 경우

사용자 이름 및 그룹 이름과 함께 UNIX 시스템의 모든 사용자를 나열하는 방법은 무엇입니까?

/etc/passwd보고서 양식 파일 및 /etc/group파일을 받고 싶습니다 .

/etc/grouppasswd 파일에서는 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/:/, /'콜론을 쉼표와 공백으로 바꾸세요.

관련 정보