テーブルに重複した最大値を保持する

テーブルに重複した最大値を保持する

Tmuxには、アクティブセッションにウィンドウを表示するコマンドはありません。したがって、アクティブセッションでTmuxのウィンドウを解析しようとしています。日付でソートされた一意のテーブル(フィールド1)があります。

#!/bin/sh
dump_tmux_info() {
    tmux list-panes -a -F "#{session_activity} #{session_name} #{window_index} #{window_name}"
}

# sort--> unique numbers descending (mru) --> unique fields3 (wind. order)
dump_tmux_info | sort -k1,1nr -u -k3 -u 

結果:

1473706992 SessionF 1 windF
1473706992 SessionI 2 windO
1473706992 SessionZ 3 windO
1473706992 SessionZ 4 windB
1473699283 SessionZ 1 windZ

私は何をしたいのですか...

  1. [Row 1、Field 1]、[Row 1、Field 2]、または Field 1(いずれかの有効なもの)の最大値に基づいてすべてのフィールドを一致させ、残りのフィールドを削除します。
  2. 一致するウィンドウ名を、順序付けられた数値配列としてリストします。windF windO windO windB

AWKを見ましたが、多次元配列要素にアクセスする方法がわかりません。

ベストアンサー1

列 1 で最大値を持つすべての列 4 値を見つけるには、次のようにします。

dump_tmux_info |
 sort -k1,1nr -u -k3 -u |
 awk '
    NR == 1 || $1 > max {max = $1; maxv = sep = ""} 
    $1 == max {maxv = maxv sep $NF; sep = " "} 
    END {print maxv}
 '

出力

windF windO windO windB

おすすめ記事