Использованиеawk
:
awk '/aaa/ { count["aaa"]++ }
/bbb/ { count["bbb"]++ }
END { for (pat in count) print count[pat], pat }' file
Это будет обновлять счетчик, связанный с совпадающим шаблоном, всякий раз, когда этот шаблон совпадает. В конце выводится список отсчетов и соответствующий шаблон.
Это (в основном )описано в разделе руководства Bash, посвященном файлам запуска .
Коротко:
/etc/profile
исходит из оболочек входа в систему
Затем извлекается первый доступный из ~/.bash_profile
, ~/.bash_login
и ~/.profile
.
По умолчанию в Ubuntu нет ~/.bash_profile
или ~/.bash_login
, поэтому используется источник ~/.profile
. Ubuntu (хорошо, Debian)~/.profile
исходники ~/.bashrc
, когда оболочка bash:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include.bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Но в целом это не так для ~/.profile
в других дистрибутивах или операционных системах.
Debian (и, следовательно, Ubuntu )используют специальную опцию для включения источника /etc/bash.bashrc
. Это не используется в macOS. Вместо этого, по крайней мере, в Каталине, /etc/profile
источники/etc/bashrc
(очень похожи на Ubuntu~/.profile
):
# cat /etc/profile
# System-wide.profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] &&. /etc/bashrc
fi