wtmpファイルの一意のユーザー数の計算

wtmpファイルの一意のユーザー数の計算

Wtmpファイル内の一意のユーザー数を数えるのに苦労しています。

これが私が今まで持っているものです:

uniqueUsers=$(last | uniq -c | wc -l)

echo "There were '$uniqueUsers' unique users logged on"

どんな助けでも大変感謝します!

答え1

このlastコマンドは複数列の出力を提供します。最初の列のみを抽出(awkまたは使用)し、その操作を実行できるcutようにデータを並べ替える必要があります。uniq両方を使用するとuniq -c重複wc -lします(1つ選択)。

uniqueUsers=$(last |cut -f1 -d ' ' | grep -v -e '^\(\|reboot\|wtmp\)$' |sort -u | wc -l)

答え2

少し短い私の突き刺し(私は切ることを好むので):

uniqueUsers=$(last | awk '{ print $1 }' | sort -u | grep -vE 'reboot|wtmp|^$'| wc -l)

答え3

空行を無視してwtmpを実行して再起動してください。

last | awk '!a[$1]++&&$1!~/reboot|wtmp|^$/' | wc -l

関連情報