awk:日付を含む空行

awk:日付を含む空行

次のコードを使用してオンラインユーザーのプロセス番号を作成し、日付を確認します。

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その行を印刷することです。

BEGINawkコードにブロックを追加できます。

BEGIN { usr = blank }

その後、内部でif印刷する前にその状態を確認してください。

...
{ if (usr != $1)  {                                                                                     
    if (usr != blank) { printf("%s\t%d\t%s\n",usr, num, tim); }                              
    usr = $1;                                                                               
    num = 1 }    
...

おすすめ記事