「qstat」と「grep」を使用して数値範囲を含む行を一覧表示するには?

「qstat」と「grep」を使用して数値範囲を含む行を一覧表示するには?

クラスタの動作状態を監視するには、次の行を出力するためにqstat使用します。

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
 146767 2.75000 REMD       xxxxxx      Rr    03/26/2021 10:58:17 [email protected]   160
 146811 2.75000 REMD       xxxxxx      r     03/26/2021 11:37:48 [email protected]   160
 146862 2.25862 REMD       xxxxxx      Rq    03/26/2021 06:24:39                                  160
 146911 2.19397 REMD       xxxxxx      Rq    03/26/2021 11:37:20                                  160
 146768 0.00000 REMD       xxxxxx      hqw   03/13/2021 14:47:35                                  160
 146769 0.00000 REMD       xxxxxx      hqw   03/13/2021 14:47:35                                  160
 146770 0.00000 REMD       xxxxxx      hqw   03/13/2021 14:47:36                                  160

各行の最初の要素はジョブIDです。特定の範囲のジョブを表示する方法はありますか?たとえば、146868から146927までのジョブのみを表示する方法はありますか?ぜひ必要なようですgrep

ベストアンサー1

さまざまな数字と一致する正規表現を書くことができますが、実際にはそれほど価値がありません。数値を数値として扱うことができるツールを使用することをお勧めします。たとえば、awkではこれは非常にマイナーなことです。ここでa、およびbはそれぞれ下限と上限であり、デフォルトでは$1スペースに沿って分割される最初のフィールドです。

$ qstat | awk -v a=146868 -v b=146927 '$1 >= a && $1 <= b {print}'
 146911 2.19397 REMD       xxxxxx      Rq    03/26/2021 11:37:20                                  160

(EREでは等価正規表現はと同じですが146(86[89]|8[789][0-9]|9[01][0-9]|92[0-7])、そこでミスしない限り不可能ではありません。BREでは代替がないため不可能です。)

おすすめ記事