테이블에 중복된 최대값 유지

테이블에 중복된 최대값 유지

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

관련 정보