Сохранять повторяющиеся максимальные значения в таблице

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. Сопоставить все поля на основе [строка 1, поле 1] ИЛИ [строка 1, поле 2] ИЛИ максимальные значения в поле 1 (либо работают ) и удалите остальные.
  2. Список совпадающих имен окон в упорядоченном числовом массиве. windF windO windO windB

Я пытался посмотреть на AWK, но не могу понять, как получить доступ к элементам многомерных массивов.

0
12.09.2016, 22:49
1 ответ

Чтобы найти все значения 4-го столбца для максимального значения столбца 1:

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
1
28.01.2020, 02:47

Теги

Похожие вопросы