8자 미만의 사용자 이름을 찾는 명령에 대한 도움말

8자 미만의 사용자 이름을 찾는 명령에 대한 도움말

방금 Linux 강좌를 듣기 시작했는데 과제가 계속 진행 중입니다.

8자 미만의 사용자 이름으로 로그인한 사용자의 사용자 이름을 찾아야 합니다. 다음은 내가 시도했지만 작동하지 않는 명령입니다. 누군가 내가 잘못한 일을 조언해 주실 수 있나요?

who | grep '[a-zA-Z0-9]\{1,7\}'

다음 명령은 8자의 사용자 이름을 반환합니다(테스트해본 결과 작동합니다).

who | grep '[a-zA-Z0-9]\{8\}'

답변1

을 사용하도록 제한되지 않은 경우 각 줄을 공백으로 구분된 열로 자연스럽게 나눈 다음 첫 번째 열에 8자 미만이 포함된 행을 요청하는 를 grep사용하는 것이 좋습니다 .awk

who | awk 'length($1) < 8 {print $1}'

주어진 출력은 who다음과 같습니다.

user1      pts/1        2019-11-24 16:31 (host1.example.com)
user1      pts/2        2019-11-24 16:31 (host1.example.com)
deadbeef   pts/3        2019-11-24 20:39 (host2.example.com)
aperson    pts/4        2019-11-24 20:39 (host3.example.com)
igotroot   pts/5        2019-11-24 20:39 (host4.example.com)

awk명령은 다음을 생성합니다.

user1
user1
aperson

출력을 파이프 awk로 파이프하여 sort -u중복을 제거할 수 있습니다.

관련 정보