次のコードを使用してオンラインユーザーのプロセス番号を作成し、日付を確認します。
w | tail -n +3 | awk '
{ "date +%H:%M:%S" | getline tim}
{if ($1 != "")
{ if (usr != $1) {printf("%s\t%d\t%s\n",usr, num, tim);
usr = $1;
num = 1 }
else {num++}
}
}
END{
if ($1 != "") if (num !=0) printf("%s\t%d\t%s\n",usr, num, tim);}
' > test2
echo
質問があります。スクリプトを実行した後、最初の分析のために+行を指定し、usrにはスペースを指定し、プロセス番号と日付には1を指定し、実際のユーザーとコンテンツを提供します。問題を解決するのに役立ちますか?それともこの機能はすでに存在していますか?
ベストアンサー1
問題は、usr
統合中であり、ループを初めて通過するときにusr
等価ではないため、$1
その行を印刷することです。
BEGIN
awkコードにブロックを追加できます。
BEGIN { usr = blank }
その後、内部でif
印刷する前にその状態を確認してください。
...
{ if (usr != $1) {
if (usr != blank) { printf("%s\t%d\t%s\n",usr, num, tim); }
usr = $1;
num = 1 }
...