Solaris 5.8のawk / 2つのフィールド/行から値を取得する

Solaris 5.8のawk / 2つのフィールド/行から値を取得する

UNIX-Solarisに初めて触れてスクリプトを作成する必要があるため、必要な値を見つけるのに苦労しています。

デフォルトでは、両方のプロセスが実行されているかどうかを検出する必要があります。次のコマンドを使用してその情報を取得できることを発見しました。

ps -fu "user" | grep -i "name_oftheprocess/file"

実行すると、このようなメッセージが表示されます。

user   16544 16530   0 08:00:00 ?           0:08 /bin/bash /path/file

user   19098 16544   0 15:44:38 ?           0:00 /bin/bash /path/file

だからここではすべてが大丈夫です。問題は、行1の2番目の値(16544)と行2の3番目の値(16544)を比較する必要があることです。一致すると、すべてが正常であるというメッセージが送信されます。そうでなければ何かが間違っています。

awkを使用してこれら2つの値を分離する方法を見つけようとしています。私が使うなら

ps -fu "user" | grep -i "name_oftheprocess/file" | awk '{print $2}' 

それは私に結果を与える

16544   19098  

(最後は必要ありません)

ps -fu "user" | grep -i "name_oftheprocess/file" | awk '{print $2}' 

それは私に結果を与える

16530   16544  (this fist one I don't need it)

だから私は2つの値を別々の変数に保存し、ifステートメントと比較したいと思います。

ベストアンサー1

このAWKに得られた情報をパイプしてください。

awk 'NR==1{a=$2}NR==3{print a==$3?"everything is ok":"something is wrong"}'

あなたの場合、完全なコマンドは次のとおりです。

ps -fu "user" | grep -i "name_oftheprocess/file" | awk 'NR==1{a=$2}NR==3{print a==$3?"everything is ok":"something is wrong"}'

メモ:

これは非常に強力ではないかもしれません!この回答では、投稿したテキストを入力として使用します。実行したい操作の詳細を提供し、最初のコマンドの出力を含めると、追加の検討が行われ、より適切なソリューションが見つかります。

おすすめ記事