私は次のような単純なawkプログラムを書いた。
last -n 10 | awk'{print "username: " $1}'
私は次のような結果を得たときに驚きました。
> username: someUsername1
> username: someUsername2
> username: someUsername3
> ...
> username: someUsername10
> username:
> username: wtmp
これを使用して、コマンドが私が提供した数より2行多く返したことlast -n 10 | wc -l
を知りました(出力は)。last
12
確認してみると、man last
この2つの追加行または削除方法に関する情報が見つかりませんでした。
空行と「wtmp」行は何ですか?私はどのようにそれらを無視できますか? (たぶん変な方でしょうか?)
ありがとうございます!
答え1
どこでも動作し、ログインデータベースのエントリが10個未満の場合、最後の2行を切り捨てる一般的なソリューションです。
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