タグをつかむ

タグをつかむ

処理されたクエリから次の詳細を取得します。

queuename                      qtype resv/used/tot. np_load  arch          states
---------------------------------------------------------------------------------
abax55@lp55cs008               BP    0/36/36        1.08     lx-amd64      
    gf:app_monitor=1
    gf:app_abaqus=1
    gf:app_abaqusfgs=1
    gf:app_actran=1
    hl:load_avg=38.980000
    hl:load_short=38.550000
    hl:load_medium=38.980000
    hl:load_long=39.030000

私はhl:load_avg=38.980000プレフィックスを使ってgrepをしたいと思いますabax55@lp55cs008 。これは、出力が次のようになることを意味します。

abax55@lp55cs008 - hl:load_avg=38.980000

....これは名前付きシステムでのみ機能しますcs008。マシンの総数は100台を超えます。

2つのオプションを提案してください:

  1. 特定のマシンに対してのみgrep、
  2. すべてのマシンをgrepするために使用されます。

ベストアンサー1

Awk解決策:

1) grep 特定のマシンのみ:

awk -v m="cs008" '/abax55@lp55cs[0-9]/ && $1 ~ m{ m_name=$1 }
       m_name && /hl:load_avg=/{ print m_name" - "$1; exit }' file

出力:

abax55@lp55cs008 - hl:load_avg=38.980000

2) grep すべてのマシンの場合:

awk '/abax55@lp55cs[0-9]/{ m_name=$1 }
     m_name && /hl:load_avg=/{ print m_name" - "$1; m_name=0 }' file

おすすめ記事