'last -n'이 n행의 사용자만 반환하도록 하려면 어떻게 해야 합니까?

'last -n'이 n행의 사용자만 반환하도록 하려면 어떻게 해야 합니까?

나는 다음과 같은 간단한 awk 프로그램을 작성했습니다.

last -n 10 | awk'{print "username: " $1}'

나는 다음과 같은 결과를 얻었을 때 놀랐습니다.

> username: someUsername1
> username: someUsername2
> username: someUsername3
> ...
> username: someUsername10
> username: 
> username: wtmp

이것을 사용하여 명령이 내가 제공한 숫자보다 두 줄 더 많이 반환했다는 last -n 10 | wc -l것을 알게 되었습니다 (출력은 ).last12

확인해 보니 man last이 두 개의 추가 줄이나 제거 방법에 대한 정보를 찾을 수 없었습니다.

빈 줄과 "wtmp" 줄은 무엇인가요? 내가 어떻게 그들을 무시할 수 있겠는가? (어쩌면 이상한 편일까요?)

감사해요!

답변1

어디에서나 작동하고 로그인 데이터베이스에 항목이 10개 미만인 경우 마지막 두 행을 자르는 일반적인 솔루션입니다.

last -n 10 | head -n -2 | awk'{print "username: " $1}'

최신 버전 util-linux(2.30.2 이상)에서는 wtmp다음 줄을 제거할 수 있습니다.

last -n 10 --time-format=notime | awk'{print "username: " $1}'

답변2

인수 없이 마지막으로 실행하면 다음과 같은 결과가 출력됩니다.

wtmp begins Fri Sep 22 18:15:02 2017

앞에도 빈 줄이 있습니다. 로그인이 기록된 날짜입니다.

이 문제를 해결하려면 head를 사용하면 됩니다.

last | head -n10

관련 정보