나는 다음과 같은 간단한 awk 프로그램을 작성했습니다.
last -n 10 | awk'{print "username: " $1}'
나는 다음과 같은 결과를 얻었을 때 놀랐습니다.
> username: someUsername1
> username: someUsername2
> username: someUsername3
> ...
> username: someUsername10
> username:
> username: wtmp
이것을 사용하여 명령이 내가 제공한 숫자보다 두 줄 더 많이 반환했다는 last -n 10 | wc -l
것을 알게 되었습니다 (출력은 ).last
12
확인해 보니 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