@Jeff Schaller, это помогло решить проблему,
---
- hosts: ansi2
become: yes
gather_facts: no
tasks:
- name: checking shell power
shell:
'>/tmp/1.txt'
args:
executable: /bin/bash
А что, если мне нужно запустить несколько команд
perl -lane '$h{$F[0]} += $F[3] >= 4 ? 1 : 0}{print "$_\t$h{$_}" for keys %h' toyModel
{{ 1}} Вам нужно накопить счетчики на каждый идентификатор и распечатать результат после обработки файла:
awk '!counts[$1] { counts[$1] = 0 }; $4 >= 4 { counts[$1]++ }; END { for (key in counts) print key, counts[key] }' toyModel
Первый оператор гарантирует, что мы измеряем идентификаторы, которые никогда не совпадают с критерий (заканчивая выходом 0). Второй увеличивает счетчик совпадающих строк. Последний оператор выполняет итерацию по ключам (идентификаторам) и выводит ключ и количество совпадений.
Если размер слишком велик для этого подхода (массив counts
становится слишком большим), а ваши идентификаторы непрерывны в файле, вы можете вместо этого использовать этот подход:
awk 'curid != $1 { if (NR > 1) print curid, count; curid = $1; count = 0 }; $4 >= 4 { count++ }; END { print curid, count }' toyModel
Это сохраняет текущий id и count, и печатает их всякий раз, когда id изменяется (и в конце). Каждый раз, когда четвертое поле больше 4, счетчик увеличивается, а всякий раз, когда изменяется идентификатор, счетчик сбрасывается.