(Un) свернуть ВСЕ потоки с тегами в mutt?

try (u - ваш файл)

sort -n -t\| -k2 -k1 < u |
awk -F\| '$1 < 8000 { a[$2]++ ; print } 
          $1 >= 8000 { if ( !a[$2] && ( !e[$2] || e[$2]<$8 ))  {u[$2]=$0;e[$2]=$8;} ; } 
          END { for ( i in u ) print u[i] ;}'

gives

4000|1234||||||23
5000|1234||||||40
15000|456||||||29
9000|123||||||22

where

  • -t\| and -F\| instruct sort and awk to use | as separator
  • -k2 -k1 : сортировать по второму, затем по первому полю
  • | в строке сортировки должен быть последний символ в строке
  • $1 < 8000 { a[$2]++ ; print } если меньше 8000, печатать строки и запоминать значение $2
  • $1 >= 8000 { ... .. } если больше, сохраните наибольшее значение
  • END { for ( i in u ) print u[i] ;} при выходе выведите все значения

  • возможно, вам потребуется повторная сортировка.

  • условие строки 2 можно упростить (поместив условие if за пределы {})

  • некоторые строки в вашем тесте имеют 9 полей.

обратите внимание, что команда может быть однострочной

... | sort -n -t\| -k2 -k1  | awk -F\| '...'
4
28.04.2017, 19:28
1 ответ

Я думаю Вам даже макрос не нужен. Существуют параметры конфигурации, касающиеся свертывания (и ).

Попробуйте следовать конфигурации и прокомментируйте макрос:

set collapse_all = yes 
set uncollapse_new = no # (default is yes)
1
27.01.2020, 21:02

Теги

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