特定の列のデータ範囲に基づいて行のみを表示するようにコマンドの出力を解析します。

特定の列のデータ範囲に基づいて行のみを表示するようにコマンドの出力を解析します。

似たような投稿にたくさん触れましたが、私が欲しいものを見つけようとしていますが、これは確かにrtfmの例です。私はawkやgrepが何らかの方法で役に立つと思います。正しい方向を指すのに役立ちます。

今後、他のユーザーがその機能を実行できるようにするプロンプトを含むスクリプトを作成する予定ですが、まず自分自身のために作業する基本的なアイデアを得たいと思います。

who -u現在ログインしているユーザーを表示し、アイドル時間に基づいてユーザーID、アイドル時間、およびPIDを表示する必要があります。

例えば、

01sale1  pts/11       2016-10-05 06:39 00:04       14132 (192.168...)
01sale2  pts/16       2016-10-05 06:40 00:07       17902 (192.168...)
01sale3  pts/14       2016-10-05 06:40   .         17779 (192.168...)
01sale5  pts/25       2016-10-05 06:41 00:04       18339 (192.168...)

誰もがオンラインにアクセスすると、リストが非常に長くなり、特定のソフトウェアのライセンス制限に達するのに問題が発生します。この問題を解決するには、ユーザーを1時間ほどアイドル状態にしておく必要があります。

私が望むのは、who -uを実行して、列6が1時間より古いかどうかに応じて列1、5、6のみを表示して01:**以上が表示されるようにすることです。

最終的には、rootを持たないユーザーが実行できるスクリプトを作成したいと思います。このスクリプトはそれらにこの情報を表示し、アイドルユーザーを終了します。完全自動化したいかどうかはわかりません。

以前のRed Hatでこのアプリケーションを実行しています。

ベストアンサー1

次のように試すことができます。

who -u | \
awk '$5 ~ /^[0-9][1-9]:.*$|^[1-9][0-9]:.*$/ {printf "%s %s %s\n", $1,$5,$6}'  

awkで始まるパターンと一致します0[1-9] || [1-9][0-9]
一致するパターンを試してみてください。起動しない00あなたがする意思がある場合。

おすすめ記事