Используйте ассоциативный массив в awk
для подсчета вхождений нулей для каждой группы:
awk '$3 == 0 && ++count[$1] || count[$1] { next } END { for (group in count) printf("%s%s%d\n", group, OFS, count[group]) }' file
Немного неловко
$3 == 0 && ++count[$1] || count[$1] { next }
проверит, равен ли третий столбец нулю, и если да, то увеличит счетчик для этой группы. Если это не так, он по-прежнему создает пустой элемент для этой группы в массиве count
. Нам нужно это, чтобы иметь возможность сообщать группы с нулевыми нулями в конце. next
предназначен только для перехода к следующей строке ввода.
Муру указывает в комментариях, что этот бит можно заменить немного более коротким
{ count[$1] += ($3 == 0) }
, где $3 == 0
будет либо 0, либо 1 в зависимости от значения в третьем столбце.
Вывод в конце выполняется с помощьюprintf()
:
printf("%s%s%d\n", group, OFS, count[group])
Это напечатает группу (из первого столбца входных данных )вместе с соответствующим количеством нулей,сOFS
(разделителем полей вывода; по умолчанию пробел )в -между ними.
Если счетчик отсутствует для одной группы, формат printf()
%d
будет вставлять ноль.
Тестирование:
$ awk '$3 == 0 && ++count[$1] || count[$1] { next } END { for (group in count) printf("%s%s%d\n", group, OFS, count[group]) }' file
A 2
B 0
Глядя на документацию , в разделе о конфиденциальных полях упоминается, что единственными ограничениями, накладываемыми на используемый алгоритм шифрования, является то, что он должен быть симметричным шифром (, т.е. паролем -основанный/общий -ключ -основанный, а не открытый -ключ -основанный ), и что зашифрованные данные преобразуются в некоторую форму ASCII, например, кодировка base64.
Глядя на файл configure.ac
проекта , мы видим, что он содержит код для обнаружения библиотеки libgcrypt
. Если библиотека не может быть найдена на хосте, компилирующем код, GNU recutils будет собран без поддержки шифрования/дешифрования полей.
Библиотека libgcrypt
— это криптографическая библиотека общего назначения, являющаяся частью программного проекта GnuPG. Он имеет количество симметричных шифров.