подсчитывать уникальные записи в определенном столбце между поисковым шаблоном

Нелегко на уровне tmux или терминала OSX (сценарии tmux не кажутся достаточно мощными), но если вы случайно при использовании bash у него есть функция, называемая команда-подсказка, в которую вы можете помещать сценарии.

Вот несколько указателей (с примерами):

Если вы используете zsh , похоже, это также предлагает возможности:

Ключ po int во всем этом заключается в том, что некоторые оболочки предоставляют возможность вызывать сценарии общего назначения каждый раз, когда отображается приглашение.

1
20.12.2017, 10:11
2 ответа

Awkрешение:

awk '/robot/{ 
         if (r){ printf "%s : %d\n", r, c; c=0; delete a } 
         r = $1 OFS $2; 
     }
     /drive/ && !a[$3]++{ c++ }
     END{ printf "%s : %d\n", r, c }' file
  • r = $1 OFS $2-"робот" имя
  • delete a-удалить все элементы массива a. (Следующий оператор предоставляет портативный, но неочевидный способ очистки массива:split("", array))
  • c++-подсчет уникальных "дисков" номеров для определенного "робота"

Выход:

robot 0 : 11
robot 1 : 4
3
27.01.2020, 23:24
awk '$1=="robot" && $2 == "1" {x=NR+5} (NR<=x) {print}' test  | awk '{print $3}' | sed '/-/d' |wc -l | awk '{print "robot1:" " "  $0}'

робот1 :4

 awk 'NR >2 {print $0}' test  |sed -n '/robot/,/robot/{x;p;d;};x'| sed '/^$/d' | sed '/robot/d' | awk '{print $3}' | sort | uniq | wc -l | awk '{print "robot0:" " " $1}'

робот0 :11

0
27.01.2020, 23:24

Теги

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