/etc/passwd
명명된 데이터베이스에서 모든 사용자 이름을 추출한 다음 출력을 알파벳 역순으로 정렬하려면 어떤 명령을 사용합니까 ?
답변1
cut -d: -f1 /etc/passwd | sort -r
또는
awk -F: '{print $1}' /etc/passwd | sort -r
실제로 nsswitch를 사용하는 시스템(예: 요즘 대부분의 (전부는 아니지만) Linux 배포판 및 기타 많은 *nix)을 사용하는 경우 다른 가능한 사용자 계정 데이터 소스가 많이 있으므로 getent passwd
읽기만 하는 것이 아니라 사용해야 합니다. /etc/passwd
(LDAP 및 nis 또는 yp 포함):
getent passwd | cut -d: -f1 | sort -r
getent passwd | awk -F: '{print $1}' | sort -r
답변2
홈 디렉토리가 /home에 있는 실제 사람들을 나열하려면 다음과 같이 목록을 필터링할 수 있습니다.
grep home /etc/passwd|cut -d: -f1
답변3
sed 's/:.*//' /etc/passwd | sort -r
sed
~이다에스트레메편집하다itor는 텍스트 편집 명령을 텍스트 데이터 스트림에 적용하는 데 사용됩니다. sed
사용일반적인 표현텍스트 줄 내의 패턴과 일치합니다. 일반적인 표현grep, awk, emacs, vi, perl, python 등과 같은 많은 Unix/Linux 명령에 공통됩니다. 따라서 정규식을 배우면 다양한 명령을 사용하는 능력이 향상됩니다.
위의 sed 명령은 s
텍스트의 각 줄에서 기능을 실행(교체)합니다. 기본 s
명령은 다음과 같이 작동합니다.
`s/regular expression/replacement/`
sed
이 명령의 정규식은 :.*
줄의 첫 번째 콜론(있는 경우)과 일치하며, 그 뒤에는 줄의 (묵시적인) 끝에 0개 이상의 *
다른 문자( )가 옵니다. 이와 일치하는 모든 항목을 아무것도 아닌 것으로 바꾸고 결과를 인쇄합니다..
sed
즉, 이 sed 명령은 줄을 인쇄하기 전에 첫 번째 콜론부터 줄 끝까지 모든 것을 삭제합니다.