숙제를 위해 모든 사용자 목록(사용자 이름만 제외)을 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은 이 경우에 적합하지 않습니다. getent
awk를 사용하여 비밀번호 파일을 가져와서 구문 분석해 보세요(콜론으로 구분된 내용).
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}'
비시스템 사용자나 기본 제공 사용자를 확보하기 위한 것입니다.