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중복을 제거할 수 있습니다.

관련 정보