Простой, если ключевое слово всегда находится в одном столбце, например столбец номер 2
cut -d, -f 2 file(s) | grep -c 'true'
т.е. вырезать столбец 2 (-f 2), используя "," в качестве разделителя полей (-d,), получить (grep) все истины и посчитать их (-c)
сложнее, если нам нужно искать столбец " ARD "
awk 'BEGIN {FS = ","} ; FNR == 1 { for ( i=1 ; i<=NF ; i++ ) { if ( $i=="ARD" ) { col=i } } } ; FNR >= 2 { print $col }' file(s) | grep -c 'true'
1) BEGIN {FS =", "}
перед каждым действием (BEGIN) используйте запятую ", "
в качестве разделителя полей ( FS =
)
2) для первой строки (т.е. строки заголовка) этого файла ( FNR == 1
) для всех столбцов ( для (i = 1; i <= NF; i ++)
) проверьте, есть ли в этом столбце строка «ARD» ( if ($ i == «ARD»)
); если это так, установите для переменной col
номер этого столбца {col = i}
3) теперь, когда мы знаем номер нашего столбца, напечатайте столбец, пропуская первый (= заголовок ) строка (т.е. все строки больше 2) этого файла FNR> = 2 {print $ col}
. здесь мы используем переменную col
, как определено ранее.
4) направлять вывод через grep
, подсчитывая ( -c
) количество вхождений «истина»
5) для распечатки файлов, используйте a для цикл в сценарии bash
Из того, что я смог собрать после продолжительного чтения, особенно их официальной документации , /usr/share/doc/bash-completion/README.Debian
и самих источников:
/etc/bash_completion.d/
— это унаследованный каталог, в котором дополнения загружаютсяс готовностью , т. е. все загружаются сразу при запуске основного скрипта. Только несколько пакетов все еще устанавливаются там, большинство уже перенесено на новый стандарт.
/usr/share/bash-completion/completions/
— это каталог для файлов завершения, которые загружаются динамически по запросупользователем bash-completion
. Они поставляются только , когда необходимы (и, что наиболее важно, , если необходимы ), экономя массу ресурсов, не загружая миллион дополнений для команд, которые вы никогда не будете использовать..
По поводу этого вашего комментария о/etc
:
it would be mixed with apt controlled packages... I was hoping for a separate path
Файлы в /etc
не совсем "управляемые", по крайней мере, не так, как /usr/bin
или /usr/share
.[1] Это файлы конфигурации , и они предназначены для изменения локальным администратором (вами ). Пакеты создают их во время установки, обычно содержащие значения по умолчанию, а затем вы должны изменить их в соответствии со своими потребностями.
Некоторые пакеты делают еще один шаг вперед, чтобы упростить обслуживание, и вместо (или вместе с )конфигурационными файлами они также создают (пустой )конфигурационный каталог . для «вставки -» дополнительные файлы настройки. Таким образом, вместо изменения файла конфигурации для изменения некоторых настроек, сложной и чреватой ошибками задачи с использованием таких инструментов, как grep
, sed
и awk
, вы просто создаете(или удаляете )файлы «фрагмента конфигурации», которые переопределяют нужные настройки.
Просмотрите все /etc/{,*/}*.d/
каталоги в вашей системе. Ваш пакет хочет установить собственный репозиторий, например Google Chrome? Не редактируйте /etc/apt/sources.list
, перетащите файл в /etc/apt/sources.list.d/
. Новые услуги? /etc/systemd/system/
. Настройки системы?/etc/sysctl.d/
(Кстати, см. README ).
Гораздо проще, и больше не надо наступать друг другу на пятки.
Некоторые каталоги в /usr/share
ведут себя так же :ваш файл .desktop
переходит в /usr/share/applications/
, а новые MIME-типы — в /usr/share/mime/packages/
и так далее. Отличие от /etc
в том, что вы, администратор, не должны изменять или удалять файлы, которые вы не создавали/не устанавливали самостоятельно.
То же самое и с /usr/share/bash-completion/completions/
.
Тем не менее, у меня есть хорошие и плохие новости для вас:
Плохая новость: если вы пытаетесь установить дополнение в их репозиторий github , это не дополнение bash, а файл дополнения zsh
! И нет, bash и zsh полностью несовместимы в отношении дополнений.
Не волнуйтесь, хорошая новость заключается в том, что:ripgrep
доступен в репозиториях apt начиная с Ubuntu 18.10! Ура! :Д
sudo apt install ripgrep
И знаете что? Он содержит файл завершения bash ! Установлен, разумеется, по адресу /usr/share/bash-completion/completions/rg
.
Время радоваться, приятель!
[1] :Честно говоря, можно сказать, что они «поддаютсямониторингу »,не контролируется. Прочтите Все, что вам нужно знать о файлах конфигурации conffiles :, управляемых dpkg , для получения более подробной информации.
Скрипты завершения дистрибутива обычно загружают пользовательские дополнения, если они найдены. Например. на Ubuntu, /etc/bash_completion
источники /usr/share/bash-completion/bash_completion
.. и , что источники сценариев из ~/.ssh/..
и ~/.bash_completion
(, которые в моем случае источники~/local/etc/bash_completion.d/*
).
Таким образом, если у вас настроен ~/.bash_completion
таким образом, (см.https://stackoverflow.com/a/12426672/274318способ получения всех файлов в каталоге ), вы можете просто установить дополнения ripgrep
в локальный каталог дополнений..