grep /etc/passwd로 사용자 목록 가져오기

grep /etc/passwd로 사용자 목록 가져오기

숙제를 위해 모든 사용자 목록(사용자 이름만 제외)을 grep구문 분석 하고 가져와야 합니다 . 파이프를 사용해야 하며 결과는 파일 /etc/passwd로 끝나야 합니다 . allusers이것이 내가 지금까지 가지고 있는 것입니다:

grep -i etc/password | .... >allusers 

내가 무엇을 놓치고 있나요?

답변1

힌트

행의 각 필드는 /etc/passwd콜론으로 구분되며 사용자 이름이 첫 번째 필드이므로 첫 번째 콜론 앞의 문자만 표시하도록 각 행을 필터링해야 합니다.

답변

grep이 작업을 수행하는 데 가장 적합한 도구는 아니지만 사용해야 하는 경우 다음과 같이 작동합니다.

grep -oE '^[^:]+' /etc/passwd

-o줄에서 일치하는 부분만 반환하도록 지시합니다. 나중에 사용할 수 -E있도록 확장 정규식을 활성화하세요 . 줄의 시작 부분과 일치하고 콜론을 제외한 모든 항목과 일치하며 가능한 한 많은 문자를 나타냅니다. 따라서 이것은 첫 번째 콜론까지 각 줄의 시작 부분과 일치합니다.+^[^:]+

이 도구 이외의 다른 도구에 액세스할 수 있는 경우 grep다음과 같은 더 나은 방법이 있습니다.

cut -d: -f1 /etc/passwd
sed 's/:.*//' /etc/passwd
awk -F: '{print $1}' /etc/passwd

이들 중 하나의 결과를 다음을 allusers사용하여 > allusers리디렉션 할 수 있습니다.

답변2

grep은 이 경우에 적합하지 않습니다. getentawk를 사용하여 비밀번호 파일을 가져와서 구문 분석해 보세요(콜론으로 구분된 내용).

getent passwd | awk -F ':' '{print $1}' > allusers

답변3

cat /etc/passwd | awk -F : '{print $1}' > alluser.txt

답변4

나는 다음을 사용하고 있습니다 :

grep -E 1[0-9]{3}  /etc/passwd | sed s/:/\ / | awk '{print $1}'

비시스템 사용자나 기본 제공 사용자를 확보하기 위한 것입니다.

관련 정보