2016-08-12 2 views

답변

0

당신은 파이프는 당신이 얻을 목록을 좁힐 grep을 할 수있는 필요하지 않습니다이다. grep groupname과 같은 것을 사용하십시오.

그렙 :

http://www.gnu.org/software/grep/manual/grep.html 그런 다음 당신은 단지 라인의 일부를 얻을에 AWK 사용할 수 있습니다.

awk는 :

http://tldp.org/LDP/abs/html/awk.html 그래서 귀하의 경우에 당신이 할 수 있습니다 : getent passwd | cut -d : -f 1 | xargs groups | grep linux_admins | awk {'print $1'} > users.txt

+0

grep에 많은 행운이 없다. 새로운 명령 줄을 만듭니 까? – Edgar

+0

grep에 파이핑 중입니까? 현재 사용중인 새로운 명령은 무엇입니까? 'getent passwd | cut -d : -f 1 | xargs 그룹 | grep groupname> users.txt' –

+0

"그룹 : 유닉스 : 그런 사용자 없음"이 그룹 이름 대신 사용자를 찾는 것처럼 보인다고 말했습니까? – Edgar

0

/etc/group의 각 레코드 그룹 그들의 ​​보충 그룹으로 (http://linux.die.net/man/5/group 참조) 것을있는 사용자의 목록을 종료합니다. 대상 그룹의 모든 구성원을 얻으려면 대상 그룹이 기본 그룹 인 모든 사용자 (/ etc/passwd에서/etc/group에 언급 된 대상 그룹 번호로 식별 됨)를 추가해야합니다.

이 스크립트는 모두 (당신이 group_ls이나 뭐 그런처럼 호출 할 수 있습니다) 얻을 것이다 : 당신의 접근 방식이 너무 그것을해야

getent passwd | cut -d : -f 1 | xargs groups | 
    grep ":.* $1 .*" |cut -d : -f1 

에 따라 또는

#!/bin/sh 
num_membs="$(getent group "$1" |cut -d: -f3,4)" 
num="${num_membs%:*}"; membs="${num_membs#*:}" 
(IFS=, 
printf '%s\n' $membs 
awk -v num=$num -F: ' $4 == num { print $1 } ' /etc/passwd 
) | sort -u 

을. 다음으로 떠들썩한 파티에서 배열 :

0

또한 기 (users 아래 예)와 관련된 사용자 목록을 읽을 수

IFS=$',\n' read -a names < <(grep '^users:' /etc/group | sed 's/^.*://') 

그럼 간단한 루프, 예를 들어 각 사용자에 액세스 할

for i in ${names[@]}; do echo "$i"; done 

이것은 색인 배열과 프로세스 대체를 지원하는 쉘에서만 작동합니다. 그렇지 않으면 파이프 체조가 필요합니다.

관련 문제